読者です 読者をやめる 読者になる 読者になる

OpenCV入門

Max OS X(10.10.5)でOpenCVに入門してみた。写真はtoeさんです。 導入はbrewで簡単にインストールできるし、インクルード検索パスやライブラリ検索パスもpkg-configで簡単に指定できる。

ネガポジ反転は、~演算子(ビット反転・1の補数)を実行するだけで取り出せる、というところも面白い。Mat型において、~演算子オーバーロードされているのだろう。 最後に、演算子オーバーロードのコード例を追記してみた。

CascadeClassifierによる分類では、loadするデータを変えることによって、どんな特徴を矩形抽出するかを変えている。顔の特徴と下半身の特徴。顔の矩形座標が取れれば、あとはFacebookのようにフレンドリストの教師データから名前を割り当てることはできそう。これはやってみたいところ。

$ brew update
$ brew tap homebrew/science
$ brew install opencv
$ g++ opencv.cpp `pkg-config --cflags opencv` `pkg-config --libs opencv`
$ pkg-config --cflags opencv
-I/usr/local/Cellar/opencv/2.4.12_2/include/opencv -I/usr/local/Cellar/opencv/2.4.12_2/include 

$ pkg-config --libs opencv
-L/usr/local/Cellar/opencv/2.4.12_2/lib -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab

gist.github.com

f:id:nishidy:20160202001020j:plainf:id:nishidy:20160202001027j:plainf:id:nishidy:20160202001033j:plainf:id:nishidy:20160202001617j:plainf:id:nishidy:20160202001048j:plainf:id:nishidy:20160202001053j:plainf:id:nishidy:20160202003702j:plain

#include <iostream>
using namespace std;

class Klass{
    public:
    int i;
    int j;
    Klass():i(0),j(1){
    }
    Klass* operator ~ () {
        Klass* obj = new Klass();
        obj->i = ~(this->i);
        obj->j = ~(this->j);
        return obj;
    }

};

int main(int argc, char* argv[]){
    Klass* obj = new Klass();
    Klass* rev = ~(*obj);
    printf("%d,%d\n",obj->i,obj->j);
    printf("%d,%d\n",rev->i,rev->j);
    return 0;
}
$ ./a.out 
0,1
-1,-2