OpenCV installまでの軌跡

MS Windows

Windows 7 + OpenCV 2.1 + VisualStudio2008

OpenCV 2.1 からはマルチスレッド処理対応がVer2.0までの OpenMP から TBB(Threading Building Blocks) へ変更となったので、OpenCV2.1の入手、ダウンロード、インストール、環境設定 画像処理ソリューションを参考にして、TBB対応の OpenCV をインストールしてみた。(Windows用のバイナリでは TBB が有効になっていないので、自分でビルドする必要がある。)

VisualStudio? 2008

うちの学科では MSDN を契約しているので、Professional Edition を使ったが、無料で利用可能な Visual Studio 2008 Express Edition でもよい。インストールの仕方は、太田研究室にて詳しく解説されているので、そちらを参照のこと。個人的には、DVD-ROM イメージをダウンロードして、Alchol 52% 等の仮想ドライブソフトを利用するやりかたがお勧め。
ノートPCにインストールした際に、ビルド時に 「error PRJ0003 : 'rc.exe' の起動中にエラーが発生しました」というエラーが出て、にっちもさっちもいかなかった。確かに最初のインストールに失敗していて、再度インストールし直したんだけど、結構よくあるトラブルのよう。ここによれば、機能の更新・追加のところで、不要なパッケージをチェックしてはずすことにより、SDKがきちんとインストールされるようになるらしい。うまくいかない時は要注意。

インストール用ディレクトリの作成

OpenCV と TBB 用のヘッダファイルとライブラリを展開するディレクトリを作成しておく。ここでは、解説のサイトにしたがい、C:\OpenCV2.1 にした。

OpenCV 2.1 のソースコード

OpenCV のダウンロードページから OpenCV-2.1.0-win.zip をダウンロードする。ZIPファイルを展開したら、OpenCV-2.1.0以下のファイルを先ほど作成したインストール用ディレクトリ(C:\OpenCV2.1 )にコピーする。(もちろん、元のファイル群は一連の作業が終われば不要なので、OpenCV の動作が確認できたら削除する。以下、同様。)

TBB

本家サイトの Download ページから「Stable Release」を選択し、2010-07-24 現在は Ver. 3.0 が最新版なので bb30_20100406oss をさらに選択し、tbb30_20100406oss_win.zip をダウンロードする。

ZIPファイルを展開すると、以下のようなディレクトリができる。

tbb30_20100406oss
                ┣bin
                ┣doc
                ┣examples
                ┣include
                ┃    ┗tbblib

このうち、OpenCV のビルドに必要なのは赤字で示したディレクトリだけなので、これらをインストール用ディレクトリ(C:\OpenCV2.1 )にコピーする。以下のようなディレクトリ構成になっていればOK。

C:\OpenCV2.1
            …
           ┣bin
            …
           ┣include
           ┃  ┗tbb
            …
           ┣lib

CMake

OpenCV は CMake を用いてビルドしなくてはいけないので、本家サイトから最新版(2010-07-24 現在、2.8.2)をダウンロードする。Windows (Win32 Installer)用 cmake-2.8.2-win32-x86.exe をダウンロードして、インストールする。後は、以下の2.8.1 のインストールメモのとおりに作業すればよいが、OpenCV のビルド以外に CMake を使わないのであれば、「Add Cmake to the system PATH for all users」にチェックを入れる必要はないのでは?

OpenCV のビルド

ビルドしたバイナリの格納先ディレクトリを作成しておく。ここでは、解説のサイトにしたがい、C:\OpenCV2.1\build にした。

CMake を起動する。

OpenCV-win01.jpg

起動直後の画面。

OpenCV-win02.jpg

ソースコードがあるディレクトリ (Where is the source code) とビルド先 (where to build the binaries) の欄が空白なので、

Where is the source codeの欄
  C:\OpenCV2.1
Where to build the binariesの欄
  C:\OpenCV2.1\build

を指定する。

OpenCV-win03.jpg

ディレクトリの区切り子は、"\" を入力しても画面上では "/" になるのに注意。
左下の「Configure」ボタンをクリックすると開発環境の選択ウィンドウが出てくるので、「Visual Studio 9 2008」を選択する。

OpenCV-win04.jpg

今回はTBBに対応させたいので、WITH_TBB のチェックボックスを有効にする。

OpenCV-win05.jpg

再び左下の「Configure」ボタンをクリックすると、TBBのヘッダファイルが見つからないというエラーが表示される。

OpenCV-win06.jpg

TBB_INCLUDE_DIR-NOTFOUND の部分をクリックし、TBB のインストールでヘッダファイルをコピーしたディレクトリ(C:\OpenCV2.1\inlude\tbb)を入力する。

OpenCV-win07.jpg

左下の「Configure」ボタンをクリックすると、TBBのライブラリが C:/OpenCV-2.1/include/tbb/../lib/ia32/vc9 と認識される。

OpenCV-win08.jpg

しかし、このままではうまくビルドできないので、TBB_LIB_DIR の行をクリックし、32bit 版 Windows マシンで Visual Studio 2008 を利用している場合は、C:\OpenCV2.1\lib\ia32\vc9 と入力する。

OpenCV-win09.jpg

これでようやくエラーがなくなったので、「Generate」ボタンをクリックする。

OpenCV-win10.jpg

C:\OpenCV2.1\buildOpenCV.sln という名前のファイルができているので、これを実行する。

OpenCV-win11.jpg

しばらくするとソリューション・ウィンドウ内に OpenCV のファイルが表示されるので、ソリューションのビルドを実行する。

OpenCV-win13.jpg

「c:\opencv-2.1\include\opencv\cvcompat.h(803) : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。」という警告が出るが、これは cvcompat.h が Windows のコードページ(今の場合は CP932)と異なる形式で保存されているためで、一度このファイルを開いて1箇所改行を入れて、それを消去してからファイルを上書き保存すれば、この警告はなくなる。
ソリューション構成を Debug でビルドしたら、Release についても同様にビルドする。

OpenCV-win14.jpg

もしくは、「ビルド」→「バッチビルド」と進んで、

OpenCV-win15.jpg

「ALL_BUILD 2つをチェック」してビルドすれば、一度で両方のライブラリがビルドされる。

OpenCV-win16.jpg

Debug と Release 両方をビルドすると、ディレクトリ構成は以下のようになる。

C:/OpenCV2.1/
`-- build
    |-- bin
    |   |-- Debug
    |   |   |-- cv210d.dll
    |   |   |-- cv210d.idb
    |   |   |-- cv210d.ilk
    |   |   |-- cv210d.pdb
    |   |   |-- cvaux210d.dll
    |   |   |-- cvaux210d.idb
    |   |   |-- cvaux210d.ilk
    |   |   |-- cvaux210d.pdb
    |   |     ..........
    |   `-- Release
    |       |-- cv210.dll
    |       |-- cv210.idb
    |       |-- cv210.pdb
    |       |-- cvaux210.dll
    |       |-- cvaux210.idb
    |       |-- cvaux210.pdb
    |         ..........
    `-- lib
        |-- Debug
        |   |-- cv210d.exp
        |   |-- cv210d.lib
        |   |-- cvaux210d.exp
        |   |-- cvaux210d.lib
        |     ..........
        `-- Release
            |-- cv210.exp
            |-- cv210.lib
            |-- cvaux210.exp
            |-- cvaux210.lib
            ..........

C:\OpenCV-2.1\build\bin\{Debug,Release} 以下に .dll ファイルが、C:\OpenCV-2.1\build\lib\{Debug,Release} 以下に .lib ファイルが展開される。

各種設定

環境変数

C:\OpenCV-2.1\build\bin\{Debug,Release} を環境変数 Path に追加する。「コンピュータ」→「プロパティ」→「システムの詳細設定」→「環境変数」を選択。

OpenCV-win17.jpg

TBB のファイルもあわせて、;C:\OpenCV2.1\build\bin\Debug;C:\OpenCV2.1\build\bin\Release;C:\OpenCV2.1\bin\ia32\vc9 を既存の Path に追加する。先頭にセミコロン( ; ) を付けるのを忘れずに。

OpenCV-win18.jpg
Visual Studio 2008

プログラム中にヘッダファイルやライブラリファイルの場所をフルパスで記述するのは面倒なので、それらのありかを Visual Studio に教えてあげる。
「ツール」→「オプション」を指定する。

OpenCV-win19.jpg
インクルードパスの追加

さらに、「プロジェクト」または「ソリューション」→「VC++ディレクトリ」と進み、→「ディレクトリを表示するプロジェクト」で「インクルードファイル」を選択し、C:\OpenCV2.1\include\opencvC:\OpenCV2.1\include\tbb を追加する。

OpenCV-win20.jpg
ライブラリパスの追加

同様に、「ライブラリファイル」を選択し、C:\OpenCV2.1\build\lib\Debug, C:\OpenCV2.1\build\lib\Release, C:\OpenCV2.1\lib\ia32\vc9 を追加する。

OpenCV-win21.jpg

ソースコード中での OpenCV ライブラリの指定

上記の設定をしてあげれば、OpenCV2.1の入手、ダウンロード、インストール、環境設定 画像処理ソリューションに記述されているやりかたは、以下のように簡略化される。

#include <cv.h>
#include <highgui.h>

#ifdef _DEBUG
    //Debugモードの場合
    #pragma comment(lib,"cv210d.lib")
    #pragma comment(lib,"cxcore210d.lib")
    #pragma comment(lib,"cvaux210d.lib")
    #pragma comment(lib,"highgui210d.lib")
#else
    //Releaseモードの場合
    #pragma comment(lib,"cv210.lib")
    #pragma comment(lib,"cxcore210.lib")
    #pragma comment(lib,"cvaux210.lib")
    #pragma comment(lib,"highgui210.lib")
#endif

例えば、OpenCVのサンプルにある lena.jpg という名前のファイルを表示するプログラムは、以下のようになる。

#include "stdafx.h"


#include <cv.h>
#include <highgui.h>

#ifdef _DEBUG
    //Debugモードの場合
    #pragma comment(lib,"cv210d.lib")
    #pragma comment(lib,"cxcore210d.lib")
    #pragma comment(lib,"cvaux210d.lib")
    #pragma comment(lib,"highgui210d.lib")
#else
    //Releaseモードの場合
    #pragma comment(lib,"cv210.lib")
    #pragma comment(lib,"cxcore210.lib")
    #pragma comment(lib,"cvaux210.lib")
    #pragma comment(lib,"highgui210.lib")
#endif 

int _tmain(int argc, _TCHAR* argv[])
{
	cv::Mat image;

	image = cv::imread("C:/OpenCV2.1/samples/c/lena.jpg");
	cv::imshow("Output", image);

	cv::waitKey();
	return 0;
}

プログラムの作成

「新規作成」→「プロジェクト」を選択する。

OpenCV-win22.jpg
コンソールアプリケーション

インターネット上にあるサンプルプログラムのほとんどはコンソールアプリである。
「プロジェクトの種類」で「Visual C++」→「Win32」を選択し、右のテンプレートから「Win32コンソールアプリケーション」を選択し、プロジェクト名を入力する。

OpenCV-win23.jpg

Win32 アプリケーションウィザードは、特に指定することがなければ「完了」ボタンをクリックする。

OpenCV-win24.jpg

テンプレートのソースファイルが作成されるので、適宜編集する。

OpenCV-win25.jpg

TCHAR への対応

Windows XP

殆ど太田研究室を元に行っています.

installするもの

OpenCV

OpenCV-2.0.0a-win32.exeをダウンロード&実行し,同意したところで次のような画面になる.ここでは「Add OpenCV to the system PATH for all users」にする・

opencv01.jpg

インストール先は余裕があるD:にしておく(追記:WindowsでOpenCV2.0を使用する方法によると,空白があるフォルダは使用しては駄目らしい)

opencv02.jpg

この後はデフォルトのままでインストール

CMake

最新版(今回はcmake-2.8.1-win32-x86.exe)をダウンロード&実行する. 同意した後,OpenCVと同様な以下のような画面になるので,OpenCV同様「Add Cmake to the system PATH for all users」とする.

opencv03.jpg

インストール先はこのままでもOK.

opencv04.jpg

この後はデフォルトのままでインストール

CmakeでOpenCVをビルド

スタートメニューからCmake(cmake-gui)を起動させる.「Where is the source code:」に「D:/OpenCV2.0」(OpenCVのインストール先),「Where to build the binaries:」に「D:/OpenCV2.0/build」(インストール先に作るフォルダなのでbuildでなくても可)とする.

opencv05.jpg

ここで左中央付近にある「Configure」をクリック.

opencv06.jpg

上の画面が出るので,使用可能なコンパイラを選択(今回はVisual Studio 9 2008)

しばらくすると,CMakeの中段に赤いエラーが出る.この中から「ENABLE_OPENMP」のチェックを外して再度「Configure」をクリック.

opencv07.jpg

特にエラーが無ければ,「Configure」の隣の「Generate」をクリック.「Generating done」となっていれば,CMakeは閉じてもOK.

OpenCVライブラリのコンパイル

D:/OpenCV2.0/build にOpenCV.slnが作成されている.これをダブルクリックで起動させる.(Visual Studioの登録を忘れずに!)

opencv08.jpg

中央付近が「Debug」であることを確認したのち,メニューバーの「ビルド」->「ソリューションのビルド」をクリックする.

opencv09.jpg
opencv10.jpg

暫くして出力に“0 失敗”とあれば問題なしらしい.「Debug」を「Release」にしてもう1回行う

buildフォルダ内の「lib」と「bin」のフォルダをOpenCV2.0へコピーし,/bin/Debug, /bin/Releaseにある*.dllをすべて/binへコピーする.

Visual C++の設定

ツールバーの「ツール」->「オプション」を開く.

「プロジェクトおよびソリューション」の「VC++ディレクトリ」を開いて,「ディレクトリを表示するプロジェクト」の「インクルードファイル」を選択する.

opencv12.JPG

ここに以下の画像のように追加する

opencv13.JPG

「ディレクトリを表示するプロジェクト」の「ライブラリファイル」を選択し,以下のように書き足す.

opencv14.JPG

Ubuntu + Eclipse

Ubuntu 10.04 (Lucid) に Eclipse Galileo + CDT をインストールしたマシンに OpenCV を入れてみた。Ubuntu への Eclipse + CDT のインストールは Eclipse/Ubuntuを参照のこと。

OpenCV のインストール

Lucid では 2.0 がパッケージ化されているので、apt-get でインストールするだけ。

$ sudo apt-get install libcv4 libcv-dev libcvaux4 libcvaux-dev libhighgui4 libhighgui-dev opencv-doc

ヘッダファイルは、/usr/include/opencv 以下にインストールされる。

OpenCV 2.1 のインストール

上にも書いたように Lucid のパッケージは2.0であるが、2010年4月に 2.1 がリリースされた。Changelogによれば、かなり新機能もサポートされ、200ものバグフィックスがなされたということなので、できればこれを使いたい。
まずは、念のため OpenCV 2.0 を削除しておく。

$ sudo apt-get autoremove libcv4 libcv-dev libcvaux4 libcvaux-dev libhighgui4 libhighgui-dev opencv-doc

2.1 は PPA で提供されているので、以下の手順でインストールする。OpenCV 2.1 : Gijs Molenaar

$ sudo add-apt-repository ppa:gijzelaar/opencv2
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --
    secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --
    keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --
    keyserver keyserver.ubuntu.com --recv CAFC44EE7F39098CE6EC229CCA70E6A9087475A0
gpg: 鍵087475A0をhkpからサーバーkeyserver.ubuntu.comに要求
gpg: 鍵087475A0: 公開鍵“Launchpad PPA for Gijs Molenaar”を読み込みました
gpg: 処理数の合計: 1
gpg:               読込み: 1  (RSA: 1)

$ sudo apt-get update
$ sudo apt-get install opencv opencv-doc libopencv-dev

パッケージ名が変更になり、libopencv0 に libcv4 libcvaux4 libhighgui4 が含まれ、libopencv-dev に libcv-dev libhighgui-dev and libcvaux-dev が含まれるようになったに注意。

Eclipse の設定

ヘッダファイル・ディレクトリの登録

上に書いたように、OpenCV のヘッダファイルは /usr/include/opencv ディレクトリ以下にインストールされるので、これを Eclipse に登録する。
具体的には、「ファイル」→「プロジェクト」→「C/C++ 一般」→「パスおよびシンボル」の画面で「すべての構成」が選択されているのを確認して、

Eclipse-setting01.png

「インクルード」に /usr/include/opencv を登録する。C と C++ の両方で OpenCV を利用する場合は、「すべての言語に追加」にチェックをいれておく。

Eclipse-setting02.png

ライブラリの追加

ビルドしたバイナリ・ファイルに OpenCV の動的ライブラリをリンクするよう指定する。
具体的には、「ファイル」→「プロジェクト」→「C/C++ ビルド」→「設定」→「ツール設定」の画面で「GCC C リンカー」と「GCC C++ リンカー」のいずれか、あるいは両方で、「ライブラリ」を選択し、「追加」ボタンをクリックする。

Eclipse-setting03.png

cv, highgui, cvaux, ml, cxcore を順次追加する。

Eclipse-setting04.png

下の図のように、必要なライブラリがすべて登録されて入れば OK。

Eclipse-setting05.png

参考

参考HP


添付ファイル: fileOpenCV-win30.jpg 15件 [詳細] fileOpenCV-win25.jpg 22件 [詳細] fileOpenCV-win24.jpg 20件 [詳細] fileOpenCV-win23.jpg 24件 [詳細] fileOpenCV-win22.jpg 19件 [詳細] fileOpenCV-win21.jpg 20件 [詳細] fileOpenCV-win20.jpg 29件 [詳細] fileOpenCV-win19.jpg 20件 [詳細] fileOpenCV-win18.jpg 17件 [詳細] fileOpenCV-win17.jpg 20件 [詳細] fileOpenCV-win16.jpg 14件 [詳細] fileOpenCV-win15.jpg 13件 [詳細] fileOpenCV-win14.jpg 13件 [詳細] fileOpenCV-win13.jpg 15件 [詳細] fileOpenCV-win11.jpg 8件 [詳細] fileOpenCV-win10.jpg 8件 [詳細] fileOpenCV-win09.jpg 11件 [詳細] fileOpenCV-win08.jpg 10件 [詳細] fileOpenCV-win07.jpg 11件 [詳細] fileOpenCV-win06.jpg 13件 [詳細] fileOpenCV-win05.jpg 9件 [詳細] fileOpenCV-win04.jpg 13件 [詳細] fileOpenCV-win03.jpg 14件 [詳細] fileOpenCV-win02.jpg 13件 [詳細] fileOpenCV-win01.jpg 10件 [詳細] fileEclipse-setting03.png 81件 [詳細] fileEclipse-setting05.png 61件 [詳細] fileEclipse-setting04.png 57件 [詳細] fileEclipse-setting02.png 62件 [詳細] fileEclipse-setting01.png 115件 [詳細] fileopencv14.JPG 64件 [詳細] fileopencv13.JPG 68件 [詳細] fileopencv12.JPG 65件 [詳細] fileopencv10.jpg 53件 [詳細] fileopencv09.jpg 60件 [詳細] fileopencv08.jpg 63件 [詳細] fileopencv07.jpg 66件 [詳細] fileopencv06.jpg 54件 [詳細] fileopencv05.jpg 55件 [詳細] fileopencv04.jpg 55件 [詳細] fileopencv03.jpg 56件 [詳細] fileopencv02.jpg 49件 [詳細] fileopencv01.jpg 50件 [詳細] fileopencv01.bmp 57件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-07-30 (金) 17:42:52 (38d)