windowsでopencv3.0の設定をした

opencv3.0では物体追跡や三次元点群の関数が準備されてるということで、以下の環境でopencv3.0を使えるようにしてみた。

  • windows8.1
  • visual studio2015(Debug x64
  • opencv3.0

opencv3.0をダウンロード

まず、opencvのサイト

http://opencv.org/downloads.html

からopencv3.0をダウンロードします。で、opencv本体をこんな感じにC:\opencvとして直下に移動させとく。

 

今回ハマったこと

 本来ならこの後、インクルードディレクトリ、リンカの設定をすればいいのだがC:\opencv\build\x64\vc12\libの中にあるはずのopencv_core300d.libなどのライブラリファイルなく、代わりにC:\opencv\build\x64\vc12\staticlib

の中にあった。

 そこで、よくわからないままにリンカの設定C:\opencv\build\x64\vc12\staticlibとして、やっていみるがパスが通ってないのか、エラーが出まくる。

 調べてみると、opencv3.0-alpha版などの場合、staticなライブラリファイルしか用意されてないため、opencvをcmakeを使って自分でビルドしてやる必要があるらしい。

 

cmakeをダウンロード

https://cmake.org/download/cmake-3.4.0-win32-x86.exeをポチってインストールしcmake-gui.exeを起動する。

opencvをビルド

 作業場所としてC:\opencv\workなるフォルダをつくっておいて

ソースの場所をC:\opencv\sources

バイナリの場所をC:\opencv\workと指定する。

configureボタンを押すとコンパイラの選択画面がでてくるので、Visual Stadio 12 2013 Win63を選択する。

 

 

f:id:zgmfx2oaf91:20151118135222p:plain

赤く表示されて焦るが気にせず、Generateボタンを押す。

完了するとC:\opencv\workの中にvisual stadio のプロジェクトができているので、workの中のOpenCV.slnをポチってvisual studioを起動する。

 

f:id:zgmfx2oaf91:20151118140204p:plain

Debug x64になっていることを確認(なってなかったら選び直して)してビルドをポチる。このままではC:\opencv\work\にinstallが生成されないので、さらにソリューションエクスプローラの中にあるINSTALLを右クリックして、ビルドを押す。

 完了するとC:\opencv\work\installが生成されており、辿っていくとC:\opencv\work\install\x64\vc12/libの中にopencv_core300d.libなどが生成されていることが確認できる。この.libのファイルをすべてコピーしてC:\opencv\build\x64\vc12\libの中に張り付ければ完了である。

 

プロパティシートを使ったvisual stadioでの設定

visual stadio を起動しプロジェクトをたてる。表示>その他のウィンドウ>プロパティーマネージャを押す。

f:id:zgmfx2oaf91:20151118143304p:plain

レンチのマークを押して、opencv30.propsなどの名前のプロパティシートを作成する。ここで、atinfinityさんが作ってくれてりるプロパティシートを使用する。

https://gist.github.com/atinfinity/ec2fc0f36741193d5d0b

コピーして貼り付ける。ここで、最上部のディレクトリのところを赤字のように編集して保存する。

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros">
<OPENCV_INSTALL_DIR>C:\opencv\build</OPENCV_INSTALL_DIR>
</PropertyGroup>

プログラムの実行

ソリューションエクスプローラに戻って、ソースファイルを右クリックして追加>新しい項目をクリックして、source.cppをつくる。

以下のサンプルコードをコピペして、ビルド、デバックして動けば完了。

#include <opencv2/core/core.hpp> // coreモジュールのヘッダーをインクルード
#include <opencv2/highgui/highgui.hpp> // highguiモジュールのヘッダーをインクルード
#include <iostream>

int main(int argc, const char* argv[])
{
// 1幅320px、高さ240pxで赤色の画像データを生成
cv::Mat redImg(cv::Size(320, 240), CV_8UC3, cv::Scalar(0, 0, 255));

// 2画像表示用のウィンドウを生成
cv::namedWindow("red", cv::WINDOW_AUTOSIZE);

// 3ウィンドウに画像を表示
cv::imshow("red", redImg);

// 4キー入力を待機
cv::waitKey(0);

// 5作成したウィンドウを全て破棄
cv::destroyAllWindows();

return 0;
}