OpenCV2.1のコンパイル

ソースからの再コンパイル

OpenCVの本家で提供されているWindows用のインストーラで開発していて問題が出てきたら、ソースからOpenCVのライブラリを自分でコンパイルしなしたくなる。たとえば、デバックでOpenCVのライブラリ内までステップインしていきたいけど、Windowsインストーラ(OpenCV-2.1.0-win32-vs2008.exe)で入れたものではパス等の環境が合っていないとステップインでデバグできない、とか。TBBやIPPの機能を使いたい、とか。

OpenCV2.1のソースをダウンロードしてくる。もしくは、SVNのレポジトリからとって来る

http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.1/

からOpenCV-2.1.0-win.zipをダウンロードする。

OpenCV-2.1-Readme.txtにコンパイルの手順の概要が書かれているので、これも一読。

解凍すると OpenCV-2.1.0 のディレクトリが作られる。

C:\OpenCV-2.1.0

に移動しておく。


 

Cmakeを使った再コンパイル、インストールの手順の大筋(Readmeに原本あるので一読)

1.CMakeダウンロード、インストール

http://www.cmake.org/cmake/resources/software.html

には、Linux, Win 用のソースがおいてある。インストーラーもWin,Mac,Linuxとそろっている。Win版の(cmake-2.8.3-win32-x86.exe)をとってくる。
インストーラーを実行。途中の選択で、Pathにcmakeを追加するように指定。デフォルトは、「追加しない」になっている。インストール先はどこでもいい。

1. Download CMake from http://www.cmake.org/cmake/resources/software.html
   and install it.

 

2 CMake を使ってMakeファイル(VS2008用ならソリューションファイル)を作る

cmake(gui)を起動。

where is the source code: C:\OpenCV-2.1.0

where to build the binaries: C:\OpenCV-2.1.0\build (build は初期では存在しないが、勝手に作られる。)

を設定して、Configureを押す。

specify the generator for this project

に、「Visual Studio 9 2008」を指定して、「Finish」押す。

makefileのパラメータ設定は必要に応じて。「configure」を押す。問題なければ、赤字がなくなる。

python 2.6, 2.7をOpenCVはサポートしている。python 3系列は未定らしい。python をあらかじめインストールしておくと、cmake-guiが見つけて設定してくれる。

「Generate」を押してVS2008用のソリューションファイル(名句ファイル)生成させる。

before:

after:

 

3.VS2008を使って、コンパイルする

OpenCV.sln を実行。

ビルド −> バッチビルド で「ALLBUILD」,「INSTALL」を選択して、ビルド。

 

たまたま、Pythonをインストールしてあったので、ビルドで問題が起きた。

pythonがデバック版でないと、こんなメッセージ出してコンパイル失敗する。

CMake Error at interfaces/python/cmake_install.cmake:41 (FILE):
  file INSTALL cannot find "C:/OpenCV-2.1.0/build/lib/Debug/cv.pyd".
Call Stack (most recent call first):
  interfaces/cmake_install.cmake:33 (INCLUDE)
  cmake_install.cmake:38 (INCLUDE)
Project : error PRJ0019: ツールはエラー コードを返しました : "ビルド後のイベントを実行しています..."

 

とりあえずPython使ってなかったのでアンインストールしてから、cmakeを実行しなおす。

python path の箇所が、「/registry」になる。 

 

 

4.コンパイルしたDLLを環境変数(PATH)に設定

C:\OpenCV-2.1.0\build\bin\Release

C:\OpenCV-2.1.0\build\bin\Debug;

C:\OpenCV-2.1.0\build\bin

を追加。

確認のため、サンプルを動かしてみる。

C:\OpenCV-2.1.0\samples\c に実行形式のファイルがいくつかある。DLLが見つかれないと、エラーでて実行できない。


 

 

5.VS2008で開発するために必要な設定をする。

VisualStudio2008起動して、ツール −> オプション −> プロジェクトおよびソリューションのVC++ディレクトリの設定箇所。

include ディレクトリの設定

C:\OpenCV-2.1.0\build\include\opencv

lib ディレクトリの設定

C:\OpenCV-2.1.0\build\lib

これで、ビルドしても、リンクエラーが出なくなる。