2013年3月現在、OpenCVの最新バージョンはVer.2.4.4です。
OpenCV2.4.4のダウンロードは下記ページより入手して下さい。
http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.4/
また、インストール方法はlibファイルのxxx240.lib,xxx240d.lib の部分をxxx244.lib,xxx244d.lib に読み替えて下さい。
下記はVer.2.4.0の説明です。
2012.5.1 OpenCV2.4の正式版が公開されました。
OpenCV2.3.1からの変更点は下記リンク先よりご確認下さい。
http://code.opencv.org/projects/opencv/wiki/ChangeLog#New-functionality
日本語版は下記を参照下さい。
OpenCV2.3.1→OpenCV2.4betaへの変更点
http://opencv.jp/opencv2-x-tips/changelog_from_231
OpenCV2.4beta→OpenCV2.4への変更点
http://opencv.jp/opencv2-x-tips/changelog_from_24beta
インストール上で気になるポイントは
●SURFおよびSIFT処理の特許が申請されている処理アルゴリズムは別のモジュール(opencv_nonfree240.dll)へ移動
●OpenCVで使用している並列化ライブラリ(TBB)がOpenCVのパッケージに同梱
注)Release版のTBBのみ、Debug実行する場合は別途TBBを入手する必要があります。
ぐらいでしょうか。
以下、Windows版のインストール方法について記します。
OpenCV2.4の入手、ダウンロード先
OpenCVの入手は下記ページよりダウンロードして下さい。
http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.0/
上記リンク先へ行き、OpenCV-2.4.0.exe をクリックしてファイルをダウンロードして下さい。
OpenCV2.4のインストール方法
ダウンロードしたファイル(OpenCV-2.4.0.exe)をダブルクリックすると、ファイルの解凍が始まるので、ここでは c:\ に解凍する事にします。(慣れている人はどこでも構いません。)
Extract to:の部分に c:\ と入力して下さい。
ファイルを解凍すると、主な構成は下記のようになっています。
c:\opencv
┣ 3rdparty
┣ android
┣ build
┃┣ common
┃┃ ┗tbb
┃┃ ┣ ia32
┃┃ ┗ intel64
┃┣ gpu
┃┣ include
┃┣ python
┃┣ x64
┃┃ ┣mingw
┃┃ ┣vc9
┃┃ ┗vc10
┃┗ x86
┃ ┣mingw
┃ ┣vc9
┃ ┗vc10
┃ ┣bin
┃ ┣lib
┃ ┗staticlib
┣ data
┣ doc
┣ include
┣ module
┗ samples
次にダウンロードしたdllファイルをPCから使えるようにPathの設定というのを行います。
Pathの設定はWindowsのスタートボタン をクリック → コンピュータ を 右クリック → プ ロパティ をクリックします。
開いたウィンドウの システムの詳細設定 をク リックします。
次に詳細設定 タブの環境変数 のボ タンをクリックします。
次にシステム環境変数のPath を選択し、編集 をクリックします。
変数値のテキストボックスの最後の部分に、OpenCVのdllファイルのあるフォルダを指定します。
また、別途OpenCV からTBB というライブラリも使用するので、この2つのPath を設定します。
32bitプログラムでVisualStudio2010を使用する場合は
;C:\opencv\build\x86\vc10\bin;C:\ opencv\build\common\tbb\ia32\vc10
※もともとあった文字は消さないようにご注意ください。
最初の ; (セミコロン)を付けるのもお忘れなく。
PATHの設定後、PCを再起動して下さい。(ログオフ⇒ログインでも可)
別の環境にOpenCVをインストールする場合は下記の表を参考に
使用する環境に合わせてディレクトリを指定して下さい。
32bit、Visual Studio2008の場合
;C:\opencv\build\x86\vc9\bin;C:\opencv\build\common\tbb\ia32\vc9
32bit、Visual Studio2010の場合
C:\opencv\build\x86\vc10\bin;C:\opencv\build\common\tbb\ia32\vc10
64bit、Visual Studio2008の場合
C:\opencv\build\x64\vc9\bin;C:\opencv\build\common\tbb\intel64\vc9
64bit、Visual Studio2010の場合
C:\opencv\build\x64\vc10\bin;C:\opencv\build\common\tbb\intel64\vc10
ただし、同梱されているTBBはRelease版のみのため、Debug実行すると
コンピュータにtbb_debug.dllが無いため・・・
と表示されてしまします。
Debug実行も行う場合は、別途TBBをこちら
http://threadingbuildingblocks.org/file.php?fid=77
のページの最新版をクリックし、Windowsの場合は tbb×××_win.zipのファイルをダウンロードし、解凍したdllファイルを上記で指定したフォルダの中へコピーして下さい。
64bitOSを使っていても32bitでプログラムする場合は x86 フォルダ内のbinディレクトリを指定して下さい。
64bitを使う場合は、VisualStudioのプラットフォームをx64 にして下さい。
(Visual Studioの上の方(メニューの下)に表示されているWin32 の部分をx64 にして下さい。)
なんだか良く分からない場合は、OSが64bitであっても、32bit版のOpenCVを使った方がハマりにくいと思います。
VisualStudio2010での使用方法
使用するのはVisualStudio C++ 2010 Express以上のエディションで大丈夫です。
VisualStudio2010を起動し、新しいプロジェクトをクリックし、左側のメニューのWin32 を選択した状態でWin32コンソールアプリケーション をクリックします。
適当な名前 を付け、保存する場所を指定し、OKボタンをクリックします。
すると下記のようなソースコードが表示されます。
// OpenCV2.4Sample.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
次にOpenCVのヘッダファイルが、今回作成したプロジェクトから参照できるように設定を行います。
プロジェクトの名前 の部分を右クリック し、メニューのプロパティ を選択します。
表示されたウィンドウ左上の構成を全ての構成にし、構成のプロパティ⇒C/C++⇒全般を選択して、OpenCV2のフォルダのあるディレクトリ(C:\opencv\build\include)を追加のインクルードディレクトリに指定します。
以上の設定を行い、ソース部分を下記のようにすると、ガウシアンフィルタ処理を行う簡単なサンプルプログラムが実行できると思います。
// OpenCV2.4Sample.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
#include "stdafx.h"
//プロジェクトのプロパティ⇒C/C++⇒全般 の追加のインクルードディレクトリに
// opencv2のあるフォルダ『C:\OpenCV\include』などを追加のこと
#include "opencv2\opencv.hpp"
#ifdef _DEBUG
//Debugモードの場合
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_core240d.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_imgproc240d.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_highgui240d.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_objdetect240d.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_contrib240d.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_features2d240d.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_flann240d.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_gpu240d.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_haartraining_engined.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_legacy240d.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_ts240d.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_video240d.lib")
#else
//Releaseモードの場合
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_core240.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_imgproc240.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_highgui240.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_objdetect240.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_contrib240.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_features2d240.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_flann240.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_gpu240.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_haartraining_engined.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_legacy240.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_ts240.lib")
#pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_video240.lib")
#endif
int _tmain(int argc, _TCHAR* argv[])
{
//画像データの読込
IplImage* src_img = cvLoadImage("C:\\opencv\\samples\\c\\lena.jpg", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
if (src_img == NULL){
return 0;
}
//表示ウィンドウの作成
cvNamedWindow("src");
cvNamedWindow("dst");
//処理後画像データの確保
IplImage* dst_img = cvCreateImage(cvGetSize(src_img), src_img->depth, src_img->nChannels);
//画像処理例(ガウシアンフィルタ)
cvSmooth(src_img, dst_img, CV_GAUSSIAN, 9);
//画像の表示
cvShowImage ("src", src_img);
cvShowImage ("dst", dst_img);
//キー入力待ち
cvWaitKey (0);
//全てのウィンドウの削除
cvDestroyAllWindows();
//画像データの解放
cvReleaseImage(&src_img);
cvReleaseImage(&dst_img);
return 0;
}
上記サンプルは32bitでVisualStudio2010で開発する場合の設定です。
環境が異なる場合は #pragma comment の部分のパスを環境に合わせて変更して下さい。
ちなみに、libファイルは全て必要ではなく、おおむね
opencv_core240、opencv_imgproc240 、opencv_highgui240 、opencv_objdetect240
の4種類ぐらいである程度動作すると思います。(使用する関数によって必要なlibファイルが決まります。)
SIFTもしくはSURFを使用する場合は、別途、
Releaseの場合:opencv_nonfree240.lib
Debugの場合 :opencv_nonfree240d.lib
が必要となります。
また、libファイルのファイル名に含まれる数字部分がOpenCVのバージョンを示し、ファイル名の最後についているdの文字がDebug用のlibファイル、dの無いファイルがRelease用のlibファイルとなっています。
その他
VisualStudio2005でOpenCV2.4を使用する場合は自分でOpenCV2.4をコンパイルするか、
VisualStudio2008用のライブラリを使用する場合は
Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)
VisualStudio2010用のライブラリを使用する場合は
Microsoft Visual C++ 2010 SP1 再頒布可能パッケージ (x86)
が必要となります。ただし、VisualStudio2005からはReleaseモードのみ実行可能なので、Debugモードでも実行したい場合はExpress Editionでも構わないのでVisualStudioをインストールすると実行可能です。
OpenCV2.4でCMakeを使って自分でOpenCVをコンパイルする場合は、OpenCV2.3の場合の説明ですが、下記ページを参照下さい。
https://imagingsolution.net/program/opencv/opencv2-3/opencv2-3-downlaod-install/#compile-opencv
基本的にOpenCVなどのライブラリを使う場合は、ライブラリの3点セット(*.dll、*.lib、*.h)をいかに使うか?がポイントになります。
余裕のある方は下記ページも参考にしてみて下さい。
ライブラリの使用方法、VisualStudioの設定方法
トラブルシューティング
●「コンピュータにopencv_core240d.dllがないため、プログラムを開始できません。 ・・・」と表示される。
このエラーメッセージはdllの参照設定が正しくできていない可能性があります。
Pathの設定を確認し、設定したらPCの再起動をしてみて下さい。
コンピュータにtbb_debug.dllが無いため・・・と表示されている場合はTBBのライブラリ(*.dll)のdebug版のファイルを入手し、指定したPathへdllファイルが入っているか?Pathの設定が正しいか?deご確認下さい。
●error LNK2019: 未解決の外部シンボル ・・・と表示される。
この未解決のシンボルのエラーの場合、libファイルの設定が不足している場合が考えられます。
libファイルの参照設定が正しいか?(本記事では、ソースコード中に記載した#pragma commentの部分)をご確認下さい。
●fatal error C1083: include ファイルを開けません。 と表示される。
ヘッダファイルの参照設定が正しくない可能性があります。
プロジェクトのプロパティで構成のプロパティ ⇒C/C++ ⇒全般 を選択して、OpenCV2のフォルダのあるディレクトリ(C:\opencv\build\include)を追加のインクルードディレクトリ に指定しているか?ご確認下さい。※includeというフォルダが2か所あるのでご注意下さい。
●Visual Studio Expressで64bit対応するには?
Expressでは標準的には64bitプログラムを作成することはできないようです。
ただし、SDKインストールすることで可能という情報もあるので、試してみては如何でしょうか?
方法 : Visual C++ プロジェクトを 64 ビット プラットフォーム用に設定する
←OpenCVへ戻る