windowsでopencvの開発環境をつくったので、そのメモです。NuGetとかCMakeとか色々方法があるらしいのですが、おそらくオーソドックスなOpenCVのサイトからダウンロードする方法で構築しました。
ほとんどイメージングソリューション様のサイトを参考にすれば問題ないのですが、一部やり方を変えたり、問題がおきたのでメモとして残しておこうと思います。
##環境
- windows10 pro 64bit
- visual studio community 2015
- OpenCV version 3.2
- visual c++ での開発
##事前準備
###OpenCV
http://opencv.org/
トップページからDLしてきます。特にインストールはなく解凍するだけです。配置するパスには日本語を含めないようにしてください。自分は
c:\lib\opencv
に配置しました。
##とりあえず空のプロジェクトを作ろう
新規プロジェクトでVisualC++ -> Win32コンソールアプリケーションを作成します。
##プロジェクトの設定
プロジェクトのプロパティを開きます。
###構成とプラットフォームを確認
構成が「すべての構成」、プラットフォームが「アクティブ(x64)」であることを確認してください。(僕はプラットフォームがアクティブ(win32)だったので、構成マネージャーからプラットフォームをx64に変更しました。)
###インクルードパス指定
C/C++を選択して、追加のインクルードディレクトリに
c:\lib\opencv\build\include
を追加します
###ライブラリパス指定
リンカー -> 全般を選択して、追加のライブラリディレクトリに、
c:\lib\opencv\build\x64\vc14\lib
を追加します
###依存ファイルのパス指定
ここで、構成(ReleaseとかDebug)ごとに設定する必要があります。リンカー -> 入力を選択して、追加の依存ファイルにパスを追加します。
追加するパスですが、構成ごとに変えなければいけません。
Debugの場合
まず、構成を「すべての構成」から「Debug」に変更します。その後、追加の依存ファイルパスに、
opencv_world320d.lib
を追加します。デバッグ用なので320dらしいです。
Releaseの場合
構成を「Release」にして
opencv_world320.lib
を追加します。
##環境変数にOpenCVのライブラリパスを指定
###環境変数設定画面を開く
コントロールパネル -> システムとセキュリティ -> システム -> システムの詳細設定を押して、システムのプロパティ画面をひらきます。一番下にある「環境変数(N)...」ボタンを押します。
###ライブラリパスをPathに追加
システム環境変数のリストの中にあるPathという環境変数の最後に
c:\lib\opencv\build\x64\vc14\bin
を追加します
##さてサンプルプロジェクトを動かしてみよう
元画像と、白黒2値化した画像を表示するサンプルを実行してみます。(ここのコードもイメージングソリューション様のコードを参考にしています)
#include "stdafx.h"
#include <opencv2/opencv.hpp>
int main()
{
// 処理前画像
cv::Mat src = cv::imread("C:\\Mandrill.BMP", CV_8UC1);
cv::Mat dst;
//二値化
cv::threshold(src, dst, 0, 255, cv::THRESH_OTSU);
//画像を表示
cv::imshow("SrcImage", src);
cv::imshow("DstImage", dst);
//キー入力待ち
cv::waitKey(0);
return 0;
}
##厳しすぎる警告を一部OFFにする
これでビルドすると私の環境では以下のようなエラーがでました
C4996 'fopen': This function or variable may be unsafe.
Consider using fopen_s instead. To disable deprecation,
use _CRT_SECURE_NO_WARNINGS. See online help for details. opencv\build\include\opencv2\flann\logger.h 66
fopenは危険だと言ってくれているようですが、もみ消したいです。ですので、stdafx.hの先頭に
#define _CRT_SECURE_NO_DEPRECATE
を追加します。
以上で私の環境では画像を表示することができました。windowsでの開発経験がほとんどないため色々と間違いがあるかもしれません。何か問題がありましたらご指摘ください。また、流用させていただいたコード等問題ありましたら削除いたします。