Matlabで顔検出する際,しばしばFaceDetect(http://www.mathworks.com/matlabcentral/fileexchange/19912) を利用する機会があるかと思われますが,そのままだとWindows 64bit環境でmexコンパイルできずつらい感じになります(先のリンクのコメント欄が阿鼻叫喚になってることからもわかるかと思います)
この原因は至極単純で,同梱されているcv.lib, cvhaartraining.lib, cxcore.libが32bit版だから,ということになります.
以下のように修正することで,Windows 64bit環境でもコンパイルができるようになります.
-
64bit版ライブラリをビルド
http://wtpage.info/program/opencv.html
ここが非常に詳しいです. -
できあがったcv_64.lib, cxcore_64.lib, cvhaartraining_64.libをFaceDetect/lib/内に,cv100_64.dll, cxcore100_64.dllをFaceDetect/bin/に置く.
-
FaceDetect.cpp内部を以下のように修正.
# include "cv.h"
# pragma comment(lib, "../lib/cv_64")
# pragma comment(lib, "../lib/cxcore_64")
# pragma comment(lib, "../lib/cvhaartraining_64")
...
- srcディレクトリに移動し,コンパイル
>> mex FaceDetect.cpp -I../Include/ -outdir ../bin/
以上です.