OpenCVはバージョンがどんどん上がっていき、
バージョンごとにOpenCVのフォルダ構造まで違ったりします。
なので、まず自分の行った環境を以下に示します。
- Visual Studio 2010(C/C++)
- OpenCV-2.3.0-win-superpack.exe(http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.3/)
OpenCVは新しいものは2.4まで出ていますが、OpenCV-2.3.0ではsuperpackというライブラリ等がコンパイルがされた状態で配布されているので非常に簡単に開発をはじめる事ができるのでおすすめです。
さらに、ネット上のサンプルのコードはバージョンが古いものしかない場合も多いので、今回はopencv.jpにある物体認識のサンプルプログラム(http://opencv.jp/sample/object_detection.html)を動かすことを目的とする
まず、VisualStudio2010で空のプロジェクトを新規作成します。ここではcvTestというプロジェクト名にしました。
ソリューションエクスプローラーのcvTest右クリックして、プロパティを開きます。
「構成プロパティ→C/C++→全般→追加のライブラリディレクトリ」
に
「C:\OpenCV\build\include;C:\OpenCV\build\include\opencv」
と入力します。
次に、
「構成プロパティ→リンカー→全般→追加のインクルードディレクトリ」
の欄に
「C:\OpenCV\build\x86\vc10\staticlib」
を指定し,
「構成プロパティ→リンカー→入力→追加の依存ファイル」
に各種ライブラリを指定します.
私は以下のようにしました
comctl32.lib;Advapi32.lib;user32.lib;Gdi32.lib;libjasperd.lib;opencv_gpu230d.lib;libjpegd.lib;opencv_haartraining_engined.lib;libpngd.lib;opencv_highgui230d.lib;libtiffd.lib;opencv_imgproc230d.lib;opencv_calib3d230d.lib;opencv_legacy230d.lib;opencv_contrib230d.lib;opencv_ml230d.lib;opencv_core230d.lib;opencv_objdetect230d.lib;opencv_features2d230d.lib;opencv_video230d.lib;opencv_flann230d.lib;zlibd.lib
次に、ソリューションエクスプローラーのcvTest右クリックしてメニューから「追加→新しい項目」を選択します。新しい項目の追加でC++ファイルを選択し、名前をmain.cppにします。
このできたmain.cppに物体認識(顔認識)のサンプルプログラム(http://opencv.jp/sample/object_detection.html)をコピペする。
また,このプログラムは
「haarcascade_frontalface_default.xml」
を必要とするので,
「C:\OpenCV\opencv\data\haarcascades」
の中から
「haarcascade_frontalface_default.xml」
を探して,プロジェクトのソースコードがあるフォルダと同じフォルダにコピーしてください.
さらに,顔認識する対象の画像が必要になるので,適当な写真を用意して同じフォルダにおいておいてください.
これでプログラムをVisual Studioからデバッグ実行をするのですが,その前にコマンド引数として対象の画像ファイル名を渡す必要があるので,
もう一度,プロジェクトのプロパティを開き「デバッグ→実行時引数」に対象の画像ファイル名を書きます.
これでVisual Studioからデバッグ実行をすると対象の画像に対して顔の部分に丸のついた画像が表示されるはずです.