2014/09/12追記
OpenCV導入について、私の以下の記事よりも、詳しい解説が数回にわたりこちらに掲載されております。こちらを参考に導入されることをおすすめします!
概要
OpenCVの導入方法には
- 公式パッケージ
- CMake
- NuGet
の方法があるが、今回は公式パッケージよりインストールする方法を行う。
なお、VS2013(2012も同様)では2008のようにプロジェクトプロパティからインクルードディレクトリなどを設定すると、プロジェクト毎に設定する必要がある。ここでは個別に設定しないで済む方法を行っていく。
(斜線部補足)この方法はOpenCVを必要としないプロジェクトの場合でもパスが通ってしまうとのご指摘があり、確かにOpenCV導入として掲載するのに相応しくない内容であったと思うので、記事最後のメモの項目に移動した。
VS2013用にOpenCVのパスを通すために、ライブラリのパス設定を記述したプロパティシートを作成し、それを読み込むことでプロジェクト設定を行う。
(VS2010,2012なども同様にできる)
CMakeやNuGetについてはこちらが参考になる。
OpenCVのインストール
公式サイトよりOpenCVのインストーラーをダウンロードし、インストールする。
(ここではCドライブにインストールしたものとする)
以下のようにDLLのパスを通す。(Visual Studio2012の場合はvc12
の部分をvc11
にする)
※かならずシステム環境変数を設定した後は再起動する
Visual Studioの設定
プロパティシートを作成する
コメントで頂いたページが非常に参考になります。(感謝!)
参考ページをそのまま改変しただけなので、私が作成したプロパティシートを掲載する必要もないかと思ったが、この記事通りの手順でCドライブにOpenCVをインストールしている方が居られるかもしれないので、念のため載せておく。
今回作成したプロパティシート。(vc11なども同様にできる。参考ページがおすすめ)
これをどこかのディレクトリに保存しておく(後で使う)
動作チェック
以下の図のように用意したプロパティシートを適用する。
以下のコードが動作するかチェックする。
(以下のコードはこちらを一部改変して使用させて頂きました)
#include <opencv2/nonfree/nonfree.hpp>
#include <opencv2/core/core.hpp>
#include <opencv/highgui.h>
/*プロパティシートに記述してるので必要なくなった
//Debug Mode
#ifdef _DEBUG
#pragma comment(lib, "opencv_imgproc249d.lib")
#pragma comment(lib, "opencv_core249d.lib")
#pragma comment(lib, "opencv_highgui249d.lib")
//Release Mode
#else
#pragma comment(lib, "opencv_imgproc249.lib")
#pragma comment(lib, "opencv_core249.lib")
#pragma comment(lib, "opencv_highgui249.lib")
#endif
*/
void main()
{
// 初期化時に塗りつぶす
cv::Mat red_img(cv::Size(640, 480), CV_8UC3, cv::Scalar(0, 0, 255));
cv::Mat white_img(cv::Size(640, 480), CV_8UC3, cv::Scalar::all(255));
cv::Mat black_img = cv::Mat::zeros(cv::Size(640, 480), CV_8UC3);
// 初期化後に塗りつぶす
cv::Mat green_img = red_img.clone();
green_img = cv::Scalar(0, 255, 0);
cv::namedWindow("red image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
cv::namedWindow("white image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
cv::namedWindow("black image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
cv::namedWindow("green image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
cv::imshow("red image", red_img);
cv::imshow("white image", white_img);
cv::imshow("black image", black_img);
cv::imshow("green image", green_img);
cv::waitKey(0);
}
無事設定できていれば、4色のウィンドウが出てくる。
以上でVS2013でのOpenCVの導入が終わりです。お疲れ様でした。
これから新規プロジェクトを作る際は、作成したプロパティシートを適用するだけで、OpenCVのパス設定ができる。
もちろん、core/highgui/imgproc以外のモジュールを使用する際は、
opencv_vc12.props
を編集する必要がある。
メモ
この方法は非推奨なので、通常、利用しない方が良いようです。(コメント@dandelion1124様より端的かつ明確に理由を頂いております)
消そうかと思ったが、プロパティシートの勉強用にあえて残した。
すべてのプロジェクトでライブラリパスを通す方法。
なぜこのような方法を取ってしまったかというと、設定PCで常時ライブラリを利用する必要があり、他の方法を知らなかったため。
自分で作成したプロパティシートを常時(つまり、すべてのプロジェクトで)読み込む方法も探ったが分からなかった。
これが分かればMicrosoft.Cpp.Win32.user.props``Microsoft.Cpp.x64.user.props
を編集する必要が無くなり、少しはハッピーに・・・なれたかも
ご存知の方が居られましたらコメントなど頂けるとありがたいです。
パス設定方法はGUI上での操作とXMLを直接編集する(?)方法がある(やってることは同じ)が、どちらか片方で良い。(一応GUIとXML両方載せてある)
GUIから設定
適当な空のプロジェクトを作成(今回はCV_Test1)し、以下の1~3の手順に従って、プロパティマネージャを開き、Microsoft.Cpp.Win32.user
or Microsoft.Cpp.x64.user
をダブルクリック
次に32bit版と64bit版それぞれ設定する
- 32bit版
- 64bit版
XMLから設定
C:\Users\各ユーザー名\AppData\Local\Microsoft\MSBuild\v4.0
の中にある
Microsoft.Cpp.Win32.user.props
Microsoft.Cpp.x64.user.props
をテキストエディタなどで開き、以下のようにopencvのインクルードパスとライブラリパスを追加する。(既に他のライブラリなどのインクルードパスなどが指定してある場合、消さずに追加だけする)
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<IncludePath>C:\opencv\build\include;$(IncludePath)</IncludePath>
<LibraryPath>C:\opencv\build\x86\vc12\lib;$(LibraryPath)</LibraryPath>
</PropertyGroup>
</Project>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<IncludePath>C:\opencv\build\include;$(IncludePath)</IncludePath>
<LibraryPath>C:\opencv\build\x64\vc12\lib;$(LibraryPath)</LibraryPath>
</PropertyGroup>
</Project>