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% 等の仮想ドライブソフトを利用するやりかたがお勧め。 インストール用ディレクトリの作成 †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
┃ ┗tbb
┗lib
このうち、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 を起動する。 起動直後の画面。 ソースコードがあるディレクトリ (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 を指定する。 ディレクトリの区切り子は、"\" を入力しても画面上では "/" になるのに注意。 今回はTBBに対応させたいので、WITH_TBB のチェックボックスを有効にする。 再び左下の「Configure」ボタンをクリックすると、TBBのヘッダファイルが見つからないというエラーが表示される。 TBB_INCLUDE_DIR-NOTFOUND の部分をクリックし、TBB のインストールでヘッダファイルをコピーしたディレクトリ(C:\OpenCV2.1\inlude\tbb)を入力する。 左下の「Configure」ボタンをクリックすると、TBBのライブラリが C:/OpenCV-2.1/include/tbb/../lib/ia32/vc9 と認識される。 しかし、このままではうまくビルドできないので、TBB_LIB_DIR の行をクリックし、32bit 版 Windows マシンで Visual Studio 2008 を利用している場合は、C:\OpenCV2.1\lib\ia32\vc9 と入力する。 これでようやくエラーがなくなったので、「Generate」ボタンをクリックする。 C:\OpenCV2.1\build に OpenCV.sln という名前のファイルができているので、これを実行する。 しばらくするとソリューション・ウィンドウ内に OpenCV のファイルが表示されるので、ソリューションのビルドを実行する。 「c:\opencv-2.1\include\opencv\cvcompat.h(803) : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。」という警告が出るが、これは cvcompat.h が Windows のコードページ(今の場合は CP932)と異なる形式で保存されているためで、一度このファイルを開いて1箇所改行を入れて、それを消去してからファイルを上書き保存すれば、この警告はなくなる。 もしくは、「ビルド」→「バッチビルド」と進んで、 「ALL_BUILD 2つをチェック」してビルドすれば、一度で両方のライブラリがビルドされる。 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 に追加する。「コンピュータ」→「プロパティ」→「システムの詳細設定」→「環境変数」を選択。 TBB のファイルもあわせて、;C:\OpenCV2.1\build\bin\Debug;C:\OpenCV2.1\build\bin\Release;C:\OpenCV2.1\bin\ia32\vc9 を既存の Path に追加する。先頭にセミコロン( ; ) を付けるのを忘れずに。 Visual Studio 2008 †プログラム中にヘッダファイルやライブラリファイルの場所をフルパスで記述するのは面倒なので、それらのありかを Visual Studio に教えてあげる。 インクルードパスの追加 †さらに、「プロジェクト」または「ソリューション」→「VC++ディレクトリ」と進み、→「ディレクトリを表示するプロジェクト」で「インクルードファイル」を選択し、C:\OpenCV2.1\include\opencv と C:\OpenCV2.1\include\tbb を追加する。 ライブラリパスの追加 †同様に、「ライブラリファイル」を選択し、C:\OpenCV2.1\build\lib\Debug, C:\OpenCV2.1\build\lib\Release, C:\OpenCV2.1\lib\ia32\vc9 を追加する。 ソースコード中での 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;
}
プログラムの作成 †「新規作成」→「プロジェクト」を選択する。 コンソールアプリケーション †インターネット上にあるサンプルプログラムのほとんどはコンソールアプリである。 Win32 アプリケーションウィザードは、特に指定することがなければ「完了」ボタンをクリックする。 テンプレートのソースファイルが作成されるので、適宜編集する。 TCHAR への対応 †Windows XP †殆ど太田研究室を元に行っています. installするもの †OpenCV †OpenCV-2.0.0a-win32.exeをダウンロード&実行し,同意したところで次のような画面になる.ここでは「Add OpenCV to the system PATH for all users」にする・ インストール先は余裕があるD:にしておく(追記:WindowsでOpenCV2.0を使用する方法によると,空白があるフォルダは使用しては駄目らしい) この後はデフォルトのままでインストール CMake †最新版(今回はcmake-2.8.1-win32-x86.exe)をダウンロード&実行する. 同意した後,OpenCVと同様な以下のような画面になるので,OpenCV同様「Add Cmake to the system PATH for all users」とする. インストール先はこのままでもOK. この後はデフォルトのままでインストール CmakeでOpenCVをビルド †スタートメニューからCmake(cmake-gui)を起動させる.「Where is the source code:」に「D:/OpenCV2.0」(OpenCVのインストール先),「Where to build the binaries:」に「D:/OpenCV2.0/build」(インストール先に作るフォルダなのでbuildでなくても可)とする. ここで左中央付近にある「Configure」をクリック. 上の画面が出るので,使用可能なコンパイラを選択(今回はVisual Studio 9 2008) しばらくすると,CMakeの中段に赤いエラーが出る.この中から「ENABLE_OPENMP」のチェックを外して再度「Configure」をクリック. 特にエラーが無ければ,「Configure」の隣の「Generate」をクリック.「Generating done」となっていれば,CMakeは閉じてもOK. OpenCVライブラリのコンパイル †D:/OpenCV2.0/build にOpenCV.slnが作成されている.これをダブルクリックで起動させる.(Visual Studioの登録を忘れずに!) 中央付近が「Debug」であることを確認したのち,メニューバーの「ビルド」->「ソリューションのビルド」をクリックする. 暫くして出力に“0 失敗”とあれば問題なしらしい.「Debug」を「Release」にしてもう1回行う buildフォルダ内の「lib」と「bin」のフォルダをOpenCV2.0へコピーし,/bin/Debug, /bin/Releaseにある*.dllをすべて/binへコピーする. Visual C++の設定 †ツールバーの「ツール」->「オプション」を開く. 「プロジェクトおよびソリューション」の「VC++ディレクトリ」を開いて,「ディレクトリを表示するプロジェクト」の「インクルードファイル」を選択する. ここに以下の画像のように追加する 「ディレクトリを表示するプロジェクト」の「ライブラリファイル」を選択し,以下のように書き足す. 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ものバグフィックスがなされたということなので、できればこれを使いたい。 $ 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 に登録する。 「インクルード」に /usr/include/opencv を登録する。C と C++ の両方で OpenCV を利用する場合は、「すべての言語に追加」にチェックをいれておく。 ライブラリの追加 †ビルドしたバイナリ・ファイルに OpenCV の動的ライブラリをリンクするよう指定する。 cv, highgui, cvaux, ml, cxcore を順次追加する。 下の図のように、必要なライブラリがすべて登録されて入れば OK。 参考 †
参考HP † |