情報処理2008年9月号に、「3日で作る高速特定物体認識システム」というのが載っている(1082ページ)。3日でできるんでしょうか?ま、3日でできるかどうかはさておき、興味津々なので、やってみましょう。
■まず、これからの内容
その記事では、以下の段階で話を進めている
(1)低速特定物体認識システムの構築
(2)近似最近傍探索を用いた高速化
(3)ユーザーインターフェースの構築
まずは、(1)から。
(1)は、さらに、こー言う手順になるみたい。
(1-1)OpenCVをインストールする
(1-2)SIFTのソースをとってきて、コンパイルする
(1-3)物体IDと特徴ベクトルのファイルを作成する
ということで、今回は、(1-1)OpenCVをインストールするをやります。
■OpenCVをインストール
OpenCVというのは、「インテルが開発・公開しているオープンソースのコンピュータビジョン向けライブラリ」(引用:Wikipedia)だそうです。
こいつを、インストールします。
インストールの仕方は、「OpenCV@Chihara-Lab」の
インストール
http://chihara.naist.jp/opencv/?%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB
をそのままやります(以下斜体は上記サイトより引用、斜体でないところも、ほとんど受け売り)。
そこに書いてあるhttp://sourceforge.net/project/showfiles.php?group_id=22870に行って、opencv-winをダウンロードしてきます。
そこに書いてあるとおり、
・ダウンロードしてきたファイルを実行
・環境変数のPATHを修正(追加)して
・C:¥Program Files¥OpenCV¥samples¥c¥にある、facedetect.exeを実行
したら、ちゃんと、顔の絵が出ました。
■Visual Studioの設定
で、Visual Studioを設定します(ウィリアムのいたずらは、Visual Studio 2003を使っています)。
●まず、インクルードファイルを追加します
そこにあるように、ツール→オプションとやると、下のオプションダイアログがでるので、

そしたら、左側のツリーで「プロジェクト」→「VC++ディレクトリ」を選択、右上の「ディレクトリを表示するプロジェクト(S)」で、「インクルード」を選択して、したの4行を追加するわけですが、
C:¥Program Files¥OpenCV¥cv¥include
C:¥Program Files¥OpenCV¥cvaux¥include
C:¥Program Files¥OpenCV¥cxcore¥include
C:¥Program Files¥OpenCV¥otherlibs¥highgui
追加するには、一番下をクリックで選択されます。選択後、さらにクリックすると、入力できるようになります。
●つぎに、「ライブラリファイル」
右上の「ディレクトリを表示するプロジェクト(S)」を、「ライブラリファイル」に切り替えて、
C:¥Program Files¥OpenCV¥lib
を追加します。下の図のかんじ

■プロジェクトの作成
で、プロジェクトの作成をします。
VisualStudioの「ファイル」→「新規作成」で、「プロジェクト」を選択し、ダイアログを出したら、「Visual C++プロジェクト」の「空のプロジェクト(.NET)」を選択して、空のプロジェクトを作ります。
今回は、名前は、opencv1にしました。
そしたら、「プロジェクト(P)」→「***のプロパティ(P)」(今回はopencv1のプロパティ)でプロパティのダイアログを出したら、左側のツリーで「構成プロパティ」→「リンカ」→「入力」を選択します。
そしたら、「追加の依存ファイル」に以下の1行を追加
cv.lib cxcore.lib cvaux.lib highgui.lib
そうすると、こんな図になります。

ここまでやったら、
C:¥Program Files¥OpenCV¥samples¥c¥facedetect.cのファイルを、ソースファイルとしてプロジェクトに追加します。ソリューションエクスプローラーで、「ソースファイル」を右ボタンクリックすると、ポップアップウインドウ画出てくるので「追加」→「既存項目の追加」を選択、C:¥Program Files¥OpenCV¥samples¥c¥facedetect.cを選択すると、ソースファイルに追加されます。
■プログラム固有の修正
このプログラムは、引数に画像ファイルが必要で、カスケードファイルというのが必要になります。
引数については、まずメニューバーの「プロジェクト(P)」→「***のプロパティ(P)」(今回はopencv1のプロパティ)でプロパティのダイアログを出したら、左側のツリーで「構成プロパティ」→「デバッグ」でコマンド引数に
"C:¥Program Files¥OpenCV¥samples¥c¥lena.jpg"
と入力します(¥は本当は半角なので、全角を半角に直して入力してください)
こんなかんじ。

カスケードファイルは、ソースを直します。
main関数で、以下のところ

cascade_name = 以下を、
"C:¥¥Program Files¥¥OpenCV¥¥data¥¥haarcascades¥¥haarcascade_frontalface_alt2.xml";
(¥は本当は半角なので、全角を半角に直して入力してください)
というふうに、haarcascade_frontalface_alt2.xmlのパスにかきなおします。
■VisualStudio2003のための修正
cvaux.hに関する修正はしないでも、コンパイルできました。
でも、実行すると、エラーになります。
そのエラーについては、
OpenCV/インストール
http://co-coa.sakura.ne.jp/index.php?OpenCV%2F%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
の下のほうに載っていました。
その設定を行います。
メニューバーの「プロジェクト(P)」→「***のプロパティ(P)」(今回はopencv1のプロパティ)でプロパティのダイアログを出したら、左側のツリーで「構成プロパティ」→「全般」で
「マネージ拡張」を「いいえ」にします。以下の図のようなかんじ。

ウィリアムのいたずらの場合、これで、インストールのときに確認したのと同じ、顔の周りを囲む図がでました。
なんか、このライブラリだけでもすげー・・・(@_@!)
いろいろできそう