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
#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