LoginSignup
15
17

More than 5 years have passed since last update.

OpenCV導入 Visual Studio 2013(&2012)編

Last updated at Posted at 2014-08-24

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にする)

※64bit版も追加する場合C:\opencv\build\x64\vc12\binを以下同様に追加する
6fdf83cd-21fe-79cd-75db-145ba4179a7a.png

※かならずシステム環境変数を設定した後は再起動する

Visual Studioの設定 

プロパティシートを作成する

コメントで頂いたページが非常に参考になります。(感謝!)

参考ページをそのまま改変しただけなので、私が作成したプロパティシートを掲載する必要もないかと思ったが、この記事通りの手順でCドライブにOpenCVをインストールしている方が居られるかもしれないので、念のため載せておく。

今回作成したプロパティシート。(vc11なども同様にできる。参考ページがおすすめ)
これをどこかのディレクトリに保存しておく(後で使う)

動作チェック

以下の図のように用意したプロパティシートを適用する。

vc12.png

以下のコードが動作するかチェックする。

(以下のコードはこちらを一部改変して使用させて頂きました)

#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.propsMicrosoft.Cpp.x64.user.propsを編集する必要が無くなり、少しはハッピーに・・・なれたかも
ご存知の方が居られましたらコメントなど頂けるとありがたいです。

パス設定方法はGUI上での操作とXMLを直接編集する(?)方法がある(やってることは同じ)が、どちらか片方で良い。(一応GUIとXML両方載せてある)

GUIから設定
適当な空のプロジェクトを作成(今回はCV_Test1)し、以下の1~3の手順に従って、プロパティマネージャを開き、Microsoft.Cpp.Win32.user or Microsoft.Cpp.x64.userをダブルクリック

kasisetu.png

次に32bit版と64bit版それぞれ設定する

  • 32bit版

    32.png

  • 64bit版

    64.png

XMLから設定
 C:\Users\各ユーザー名\AppData\Local\Microsoft\MSBuild\v4.0
の中にある
 Microsoft.Cpp.Win32.user.props Microsoft.Cpp.x64.user.props
をテキストエディタなどで開き、以下のようにopencvのインクルードパスとライブラリパスを追加する。(既に他のライブラリなどのインクルードパスなどが指定してある場合、消さずに追加だけする)

Microsoft.Cpp.Win32.user.props
<?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>
Microsoft.Cpp.x64.user.props
<?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>
15
17
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
17