Matlabきらい


Matlabとの戦い.特に最近使っているのが Piotr's matlab toolbox.人物検出をやるには必須のライブラリっぽい.

というのも,Piotr DollarさんはPietro Perona先生と人物検出のサーベイや検出手法の論文を書いている人.今はFacebook のAI Researchにいる…のかな?人物検出の精度評価のデファクトスタンダードと言えるプログラムを作って公開しています.それが前述の pietor's matlab toolbox


 

最近研究室による遅くまで残ってることが多い….今日も戸締まりして帰りました.

 

10ヶ月ぶりの更新


ずっと放置してたけど
久しぶりに再開してみよう.


新しい職場では定期的にテニスの会がある.

というわけで,
ラケット買いました


MatlabのmatファイルをC/C++から読み書きするライブラリのmatioというものを教えてもらい,ちょっといじってみた.

近いうちにブログにまとめたい.

 

OpenCV 3.0.0-alphaで特徴点検出 c++11


前回SURFを無事有効化できたので,特徴点検出をしてみた.
c++11のコードを貼っておく.

#include <opencv2/opencv.hpp>

int main(){
        cv::VideoCapture cam(0);

        // 特徴量を選ぶ
        auto featureDetector = cv::FeatureDetector::create(SURF);
        //auto featureDetector = cv::FeatureDetector::create(ORB);
        //auto featureDetector = cv::FeatureDetector::create(BRISK);
        //auto featureDetector = cv::FeatureDetector::create(SIFT);
        std::cout << featureDetector->name() << std::endl;
//      auto descriptorExtractor = cv::DescriptorExtractor::create(SURF);

        while(true){
                cv::Mat img;
                cv::Mat gimg;
                cv::Mat result;
                std::vector<cv::KeyPoint> keypoints;
                std::vector<float> descriptors;

                cam >> img;
                if(img.empty()) break;

                // グレースケール化
                cv::cvtColor(img, gimg, cv::COLOR_BGR2GRAY);

                // 特徴点検出
                featureDetector->detect(gimg, keypoints, cv::Mat());
//              // 特徴量を抽出
//              descriptorExtractor->compute(gimg, keypoints, descriptors);

                // 特徴点の描画
                cv::drawKeypoints(img, keypoints, result);

                char key = cv::waitKey(1);
                cv::imshow(img, img);
                cv::imshow(gimg, gimg);
                cv::imshow(keypoints, result);
                if(key == 'q') break;
        }

        return 0;
}

コンパイルするときは,

g++ -std=c++11 -o detect sample.cpp `pkg-config --cflags --libs opencv`

名古屋!


大学の休業日を利用して名古屋に行ってきました.

今回の名古屋グルメはこれ.

ひつまぶし.

あとメジャーどころで残すはきしめんぐらいかな…?

Pythonで自前オブジェクトを文字列表現したい


Javaでいうところの toString() メソッド,Rubyでいうところの to_s() メソッド.

Pythonでは,__str__() メソッドをオーバーライドすれば良い.

def Hoge(object):
    """
    __str__のサンプル
    """
    def __init__(self):
        """
        メンバ変数の初期化
        """
        self.x = 10
        self.y = 20

    def __str__(self):
        """
        文字列表現を返す
        """
        return "(Hoge : x=%(x)d, y=%(y)d)" % {'x': self.x, 'y': self.y}


hoge = Hoge()
print(hoge)

こうすることで,「(Hoge : x=10, y=20)」と表示されるはず.

Pythonでの簡単なスレッド並列化


今まで,Pythonでの並列処理はmultiprocessingを使ったマルチプロセスのプロセスプールでやっていて,スレッドプールはないのかー?と思っていたが,
Python 3系には concurrent.future というモジュールがあった.
これの ThreadPoolExecutor をいうのを使うと,

from concurrent.future import ThreadPoolExecutor

num_threads = 10
executor = ThreadPoolExecutor(num_threads)

results = executor.map(f, values)

という風に,スレッドプールを使った処理が簡単に書けるらしい.

PySideの勉強


最近,Pythonへの移行を進めている.

GUIプログラムはQtを使ってC++で書いていたが,
PySideを使ってみようと思い,
http://qt-project.org/wiki/PySide_Video_Tutorials
にある公式のチュートリアルビデオを観ている.

C++での経験があるうえ,
ほとんど同じような使い方でできるっぽいので
すぐにマスターできそう.