Windows で OpenCV 2.0 を利用する方法

Python をよく知らない僕は導入を取りやめます,と追記.一旦入れてはみたが,よく分からないからアンインストールしておいた.「導入手順」を加筆した.

費用をかけない一例.OpenMPPython を抜く.無保証.リンク集もどき.

導入手順

  1. C コンパイラをインストールする
  2. Windows ライブラリをインストールする
  3. OpenCV ビルドサポートツールをインストールする
    • Add CMake to the system PATH for all users
  4. OpenCV 2.0 をインストールする
  5. CMake で OpenCV 2.0 ビルド Visual C++ 2008 ソリューションセットを生成する
  6. Visual C++ 2008 で OpenCV ライブラリをビルドする
    • OpenCV.sln の ALL_BUILD プロジェクトを Debug,Release の両方でビルドする
  7. できあがった lib フォルダと bin フォルダを OpenCV 2.0 インストール先にコピーする
  8. bin/Debug/ と bin/Release/ を環境変数 PATH に登録する
  9. lib/Debug,lib/Release,include/ を Visual Studio に登録する

ライブラリのリンク設定メモ

プロジェクトプロパティから設定

デバッグ時はこうなる.必要な分だけ記述する.

cv200d.lib, cxcore200d.lib, highgui200d.lib, cvaux200d.lib, cvhaartraining.lib, ml200d.lib

リリース時はこうなる.

cv200.lib, cxcore200.lib, highgui200.lib, cvaux200.lib, cvhaartraining.lib, ml200.lib
ソースコード上で設定

必要な分だけ記述する.

#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <opencv/cvaux.h>
#include <opencv/ml.h>

#ifdef _DEBUG
	#pragma comment( lib, "cv200d.lib" )
	#pragma comment( lib, "cxcore200d.lib" )
	#pragma comment( lib, "highgui200d.lib" )
	#pragma comment( lib, "cvaux200d.lib" )
	#pragma comment( lib, "cvhaartraining200d.lib" )
	#pragma comment( lib, "ml200d.lib" )
#else
	#pragma comment( lib, "cv200.lib" )
	#pragma comment( lib, "cxcore200.lib" )
	#pragma comment( lib, "highgui200.lib" )
	#pragma comment( lib, "cvaux200.lib" )
	#pragma comment( lib, "cvhaartraining200.lib" )
	#pragma comment( lib, "ml200.lib" )
#endif

更新履歴

2009年11月20日 22:38:23 ライブラリパス登録に lib/ を登録し,プロジェクトで Debug/cv200d.lib のような相対指定が出来ないことを確認した.修正した.
2009年11月21日 1:48:45 VC++ 2008 EE で OpenCV から OpenMP を利用できなかったから記述を削除した.また,Python での利用法とかを知らないから,こちらも削除した

さっき書いたメモは良くなかった

Debug ビルドを実行したら,

LINK : fatal error LNK1104: ファイル 'python25_d.lib' を開くことができません。

cvpy プロジェクトが Python 関係なので,これのリンカ入力を見てみた.Python が C:\Program Files 以下にインストールされていることを想定していた.CMake で C:\Software\Develop\Python を指定したのに反映されていない.追加のインクルードディレクトリも同様だった.

コンパイルエラーが発生した.2.x 系じゃないとだめなのか,2.5 系じゃないとだめなのか.