takminの書きっぱなし備忘録 @はてなブログ

主にコンピュータビジョンなど技術について、たまに自分自身のことや思いついたことなど

OpenCV2.0のコンパイル 追記

前回の続き。
Visual C++ 2008 Express EditionでOpenCV2.0を使ったアプリケーション開発をする際の注意点をいくつか。


1. コンパイルはDebugモードとReleaseモード両方で行う

前回はReleaseモードでコンパイルしたけど、開発時にDebugモードで開発を行う場合は、OpenCV2.0自体もDebugモードでコンパイルしておく必要がある。
Releaseモードで作成したライブラリ群をDebugモードで使おうとすると、色々とうまくいきません。例えば、2.0から新しく導入された画像読み込み関数のimread()がうまく動かない(画像を読み込めない)などの問題が起こります。

で、DebugモードとReleaseモードでそれぞれコンパイルするとlibファイルとdllファイルがそれぞれ作成されます。
前回の例だと、以下の場所にライブラリファイル群が作成されます。これらのファイルを適当なところにコピーしたり、開発環境からリンクしたりして使ってください。

  • Debugモードで作成されるライブラリファイル
    • C:\OpenCV2.0\VS2008\lib\Debug
      • cv200d.lib
      • cvaux200d.lib
      • cvhaartraining.lib
      • cxcore200d.lib
      • cxts200d.lib
      • highgui200d.lib
      • ml200d.lib
      • opencv_ffmpeg200d.lib
    • C:\OpenCV2.0\VS2008\bin\Debug
      • cv200d.dll
      • cvaux200d.dll
      • cxcore200d.dll
      • cxts200d.dll
      • highgui200d.dll
      • ml200d.dll
      • opencv_ffmpeg200d.dll
  • Debugモードで作成されるライブラリファイル
    • C:\OpenCV2.0\VS2008\lib\Release
      • cv200.lib
      • cvaux200.lib
      • cvhaartraining.lib
      • cxcore200.lib
      • cxts200.lib
      • highgui200.lib
      • ml200.lib
      • opencv_ffmpeg200.lib
    • C:\OpenCV2.0\VS2008\bin\Release
      • cv200.lib
      • cvaux200.lib
      • cvhaartraining.lib
      • cxcore200.lib
      • cxts200.lib
      • highgui200.lib
      • ml200.lib
      • opencv_ffmpeg200.lib


2. OpenMPの使用に関して

VC++のExpress Editionでは、OpenMPをサポートしていないため、標準のままCMakeを使って作成したライブラリを使用すると、プログラム実行時に、

「アプリケーションを正しく初期化できませんでした (0xc0150002)」

というエラーが出ます。
これを解決するために、はCMakeをする時に

ENABLE_OPENMP

のチェックを外して下さい。