2012.5現在、OpenCVの最新バージョンはVer2.4です。
こちらのインストール方法についてはOpenCV2.4の入手、ダウンロード、インストール、環境設定を参照願います。
OpenCV2.3.1の入手、ダウンロード先
OpenCVの入手は下記ページよりダウンロードして下さい。
http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.3.1/
上記リンク先へ行き、OpenCV-2.3.1-win-superpack.exeをクリックしてファイルをダウンロードして下さい。
OpenCV2.3.1のインストール方法
ダウンロードしたファイル(OpenCV-2.3.1-win-superpack.exe)をダブルクリックすると、ファイルの解凍が始まるので、ここでは c:\ に解凍する事にします。(慣れている人はどこでも構いません。)
Extract to:の部分に c:\ と入力して下さい。
ファイルを解凍すると、主な構成は下記のようになっています。
c:\opencv
┣ 3rdparty
┣ android
┣ build
┃┣ common
┃┣ 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ファイルのあるフォルダを指定します。
;C:\opencv\build\x86\vc10\bin
※もともとあった文字は消さないようにご注意ください。
最初の ; (セミコロン)を付けるのもお忘れなく。
PATHの設定後、PCを再起動して下さい。(ログオフ⇒ログインでも可)
上記の設定は32bitOSでVisual Studio2010を使う場合の設定です。
使用する環境に合わせてディレクトリを指定して下さい。
32bit、Visual Studio2008の場合 | C:\opencv\build\x86\vc9\bin |
32bit、Visual Studio2010の場合 | C:\opencv\build\x86\vc10\bin |
64bit、Visual Studio2008の場合 | C:\opencv\build\x64\vc9\bin |
64bit、Visual Studio2010の場合 | C:\opencv\build\x64\vc10\bin |
64bitOSを使っていても32bitでプログラムする場合は x86 フォルダ内のbinディレクトリを指定して下さい。
64bitを使う場合は、VisualStudioのプラットフォームをx64にして下さい。
TBBの入手、ダウンロード
OpenCV2.3.1のバイナリ版(コンパイルされているdll)を使う場合は、TBB(Intel Threading Building Blocks)という並列処理用のライブラリが必要となります。
OpenCVをダウンロードすると \opencv\build\common\tbb のフォルダにTBBのdllが入っているのですが、debug版が不足してます。
そのため、TBBのライブラリを入手します。
入手先
http://threadingbuildingblocks.org/
上記リンクのページへ行き、上側のメニューのDownloads⇒ページ中央部のStable Releaseと移動し、最新のバージョンのTBBをクリックします。(2012年1月現在、tbb40_20111130oss)
次にWindows版のDownloadボタンをクリックし、ファイルをダウンロードします。
Windows版の場合、tbb40_20111130oss_win.zip
ダウンロードしたファイルを解凍すると下記のようなフォルダ構成になっています。
\tbb40_20111130oss_win\tbb40_20111130oss
┣ bin
┃┣ ia32
┃┃ ┣vc8
┃┃ ┣vc9
┃┃ ┗vc10
┃┗ intel64
┣ doc
┣ examples
┣ include
┗ lib
そこで、今回は32bitOSでVisualStudio2010を使う事を想定しているので、
フォルダ(\tbb40_20111130oss_win\tbb40_20111130oss\bin\ia32\vc10)内にあるdllファイル
tbb.dll、tbb_debug.dll、tbb_preview.dll、tbb_preview_debug.dll、tbbmalloc.dll、tbbmalloc_debug.dll、tbbmalloc_proxy.dll、tbbmalloc_proxy_debug.dll
を全てOpenCVのbinフォルダ(C:\opencv\build\x86\vc10\bin)へコピーして下さい。
32bit/64bit、VisualStudioのバージョンによりフォルダが異なるので、環境に合わせてフォルダを選択して下さい。
これで、OpenCVの設定は完了です。
VisualStudio2010での使用方法
使用するのはVisualStudio C++ 2010 Express以上のエディションで大丈夫です。
VisualStudio2010を起動し、新しいプロジェクトをクリックし、左側のメニューのWin32を選択した状態でWin32コンソールアプリケーションをクリックします。
適当な名前(上図ではOpenCV2.3.1Sample)を付け、保存する場所を指定し、OKボタンをクリックします。
すると下記のようなソースコードが表示されます。
// OpenCV2.3.1Sample.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 // #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { return 0; }
次にOpenCVのヘッダファイルが、今回作成したプロジェクトから参照できるように設定を行います。
プロジェクトの名前の部分を右クリックし、プロパティを選択します。
表示されたウィンドウ右上の構成を全ての構成にし、構成のプロパティ⇒C/C++⇒全般を選択して、OpenCV2のフォルダのあるディレクトリ(C:\opencv\build\include)を追加のインクルードディレクトリに指定します。
以上の設定を行い、ソース部分を下記のようにすると、ガウシアンフィルタ処理を行う簡単なサンプルプログラムが実行できると思います。
// OpenCV2.3.1Sample.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_core231d.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_imgproc231d.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_highgui231d.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_objdetect231d.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_contrib231d.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_features2d231d.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_flann231d.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_gpu231d.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_haartraining_engined.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_legacy231d.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_ts231d.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_video231d.lib") #else //Releaseモードの場合 #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_core231.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_imgproc231.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_highgui231.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_objdetect231.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_contrib231.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_features2d231.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_flann231.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_gpu231.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_haartraining_engined.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_legacy231.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_ts231.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_video231.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; }
ちなみに、libファイルは全て必要ではなく、おおむね
opencv_core231、opencv_imgproc231、opencv_highgui231、opencv_objdetect231
の4種類ぐらいである程度動作すると思います。(使用する関数によって必要なlibファイルが決まります。)
また、libファイルのファイル名に含まれる数字部分がOpenCVのバージョンを示し、ファイル名の最後についているdの文字がDebug用のlibファイル、dの無いファイルがRelease用のlibファイルとなっています。
その他
OpenCV2.3.1においてもCMakeを使って自分でOpenCVをコンパイルする事が可能です。
CMakeのソースコードにはOpenCV-2.3.1-win-superpack.exeを解凍したフォルダ(opencv)を指定して下さい。
OpenCV2.3の場合の説明ですが、詳細は下記ページを参照下さい。
https://imagingsolution.net/program/opencv/opencv2-3/opencv2-3-downlaod-install/#compile-opencv
基本的にOpenCVなどのライブラリを使う場合は、ライブラリの3点セット(*.dll、*.lib、*.h)をいかに使うか?がポイントになります。
余裕のある方は下記ページも参考にしてみて下さい。
これを覚えておくと、OpenCVがバージョンアップした場合や他のライブラリを使う場合など、応用ができると思います。
ピンバック: opencv2.4.3をwindows7 64bitのパソコンにインストールしてみた(vc++2010) « misokyuri
初めまして.
opencv初心者のものです.
1>—— ビルド開始: プロジェクト: 20121212sample, 構成: Debug Win32 ——
1>コンパイルしています…
1>stdafx.cpp
1>コンパイルしています…
1>20121212sample.cpp
1>c:\users\○○\documents\visual studio 2008\projects\20121212sample\20121212sample\20121212sample.cpp(7) : fatal error C1083: include ファイルを開けません。’opencv2\opencv.hpp’: No such file or directory
1>ビルドログは “file://c:\Users\○○\Documents\Visual Studio 2008\Projects\20121212sample\20121212sample\Debug\BuildLog.htm” に保存されました。
1>20121212sample – エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
と出てしまいます.
設定を確認したのですが,わかりません.
返信お待ちしております.
補足
上記のプログラムを実施したところこのようなエラーが出てしまいました.
ちなみに私が利用しているものは,
opencv2.3.1
vs2008
windows7 64bit です.
sgsgさん、はじめまして。
このエラーはヘッダファイルのあるディレクトリが正しく設定されていないために起きるエラーだと思います。
本記事中の「OpenCVのヘッダファイルが、今回作成したプロジェクトから参照できるように設定を行います。・・・」と書いてある部分以降の設定が正しく行われているか?確認してみて下さい。
(本記事ではVisualStudio2010の設定としていますが、2008でもあまり変わらないと思います。)
以上、よろしくお願い致します。
akiraさん
返信ありがとうございます.
akiraさんがおっしゃったように「OpenCVのヘッダファイルが、今回作成したプロジェクトから参照できるように設定を行います。・・・」と書いてある部分以降の設定を見直してみました.
追加のインクルードディレクトリの設定も上記のようにC:\opencv\build\includeで入力してあります.
プログラムは以下のようになっております.
その際に,64bitですが,libの部分をx86 vc9で入力してあります.
環境変数C:\opencv\build\x86\vc9\binで設定し,
C:\opencv\build\x86\vc9\binにTBB4.0のia32 vc9内にあるdllファイルをコピーしました.
// opencvsampleAAA.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
#include “stdafx.h”
//プロジェクトのプロパティ⇒C/C++⇒全般 の追加のインクルードディレクトリに
// opencv2のあるフォルダ『C:\OpenCV\include』などを追加のこと
#include “opencv2\opencv.hpp”
#ifdef _DEBUG
//Debugモードの場合
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_core231d.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_imgproc231d.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_highgui231d.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_objdetect231d.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_contrib231d.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_features2d231d.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_flann231d.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_gpu231d.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_haartraining_engined.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_legacy231d.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_ts231d.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_video231d.lib”)
#else
//Releaseモードの場合
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_core231.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_imgproc231.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_highgui231.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_objdetect231.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_contrib231.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_features2d231.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_flann231.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_gpu231.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_haartraining_engined.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_legacy231.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_ts231.lib”)
#pragma comment(lib,”C:\\opencv\\build\\x86\\vc9\\lib\\opencv_video231.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;
}
なにか間違いがありますでしょうか?
お忙しい中申し訳ありません.
宜しくお願い致します.
まず、「fatal error C1083: include ファイルを開けません。」と出るエラーはlibファイルやdllファイルは関係なく、ソースコード中でインクルードしているヘッダファイル(*.h)だけの問題です。
そのため、プロジェクトのプロパティの「追加のインクルードディレクトリ」に
C:\opencv\build\include
を指定していて、コード中に
#include “opencv2\opencv.hpp”
と記載しているのであれば、opencv.hppのファイルパスは
C:\opencv\build\include\opencv2\opencv.hpp
となる訳ですが、上記のファイルがあるか?確認してみて下さい。
もし、パスが異なる場合は、「追加のインクルードディレクトリ」を設定しなおしてみて下さい。
はじめまして、大変参考にしていただきました。
上記のように設定した後、サンプルプログラムを実行すると
Debug\OpenCV2.3.1Sample.obj : fatal error LNK1112: モジュールのコンピューターの種類 ‘X86’ は対象コンピューターの種類 ‘x64’ と競合しています。
というエラーが出ました。どうすれば回避できますか?
環境は
○Windows7
○Visual Stdio 2010 Express
○64ビット
です
おそらくLibファイルの参照設定を64bitのファイルにしていて、作成しているOpenCVのプログラムが32bitで作られているためだと思います。(ツールバーのReleaseやDebugを切替えるコンボボックスの右側のソリューションプラットフォームがWin32になっていないでしょうか?)
Express版だと64bit版のプログラムが作成できない(ソリューションプラットフォームにx64を指定できない)ので、OSが64bitであっても、32bit版のLibファイルを参照してみて下さい。(当然、32bitプログラムとなりますが、64bitOS上で動作します。)
もしくはこちらのページの最後の部分↓
http://imagingsolution.net/program/opencv/opencv2-4-dynamic-downlaod-install/
にも記載していますが、SDKをインストールする事で、Expressでも64bitプログラムが作成できるようです。私はやった事がないのですが、試してみては如何でしょうか?
以上、よろしくお願い致します。
追記
32bitプログラムにする場合はdllのPathの設定も32bitのdllを参照設定する必要があります。念のため。
分かりやすい解説本当にありがとうございます。
早速やってみます。
出来ました!!
本当にありがとうございます。
設定を32bitにすると動作しました。
今までいろいろなサイトを参考にしてきましたが、
一番わかりやすいサイトです。
ありがとうございます。助かりました。
初めまして 参考にさせていただきました とても助かりました ありがとうございます。
ところでお尋ねしたいことがあるのですが、本文では「;C:\opencv\build\x86\vc10\bin」が32bit、VS2010の時の設定と書いてあり、表を見ると「32bit、Visual Studio2010の場合 C:\opencv\build\x64\vc10\bin」となっておりました。
どちらが正しいのでしょうか
また、x86、x64やvc9、vc10などの違いなど教えていただけると嬉しいです。
よろしくお願いします
失礼しました。
ご指摘の部分は修正しておきました。
x86、x64やvc9、vc10の違いはそれぞれ
x86→32bit
x64→64bit
VC9→VisualStudio2008
VC10→VisualStudio2010
に対応しています。
ありがとうございました とても助かりました
めっちゃわかりやすかったです!ありがとうございました。
どうもありがとうございます!
ピンバック: OpenCV2.3の入手、ダウンロード、インストール、環境設定 | イメージングソリューション
ピンバック: OpenCV2.3.1が公開されました。 | イメージングソリューション