2015年6月28日日曜日

OpenCVのインストール (Windows 8 & Visual Studio 2013)

OpenCVはVersionが3.0系が出ている。2系との違いは下記HPがわかりやすかったので、そちらを参照。
OpenCV3.0.0-alphaの特徴抽出・マッチングまとめ

結果、大きな違いの一つは特徴点抽出のインターフェースが違うことみたいだ。私の場合、基本からやりたかったので、最初から(追加をいれなくても)SIFTやSURFが使える2.4.10にした。以降、2.4.9を前提にインストールの手順を進める。

1.OpenCV公式パッケージの入手とインストール
公式ページからダウンロード。今回は、2.4.10。
展開する。展開場所はどこでもよいが、参考したページに従い、C:\dev\ にした。
パスにスペースが入ると動かいソフトもあるので、これがよいだろう。

2.環境変数に追加
C:\dev\opencv-2.4.10\opencv\build\x64\vc12\bin
ちゃんと追加されているか確認するために、commandを立ち上げて、「opencv_traincascade.exe」とでも打ち込み、エラーが表示されなければよいだろう。上手くいけば、引数が足りないといわれヘルプがでるだけ。

3.Visual Studio Project ファイルの設定
・インクルードパス
ソリューションエクスプローラーのプロジェクト名を右クリックし、プロパティを立ち上げる。
構成プロパティ->C/C++
 追加のインクルードディレクトリに下記を追加
 C:\dev\opencv-2.4.10\opencv\build\include

・ライブラリパス
ソリューションエクスプローラーのプロジェクト名を右クリックし、プロパティを立ち上げる。
構成プロパティ->リンカー
 追加のライブラリディレクトリに下記を追加
 C:\dev\opencv-2.4.10\opencv\build\x64\vc12\lib

・使用ライブラリの指定
ソリューションエクスプローラーのプロジェクト名を右クリックし、プロパティを立ち上げる。
構成をDebug若しくはReleaseにして、構成プロパティ->リンカー->入力
 追加の依存に下記を追加(下はDebugの時)
opencv_core2410d.lib
opencv_highgui2410d.lib
何のライブラリが必要かは、下の表見てね。(OpenCV入門(1)より)
(まぁ、cmakeを使えば勝手に集めてくれるが、執筆時点Cmakeが上手く動いてくれないので、直接入れている。)

モジュール名ライブラリ名(OpenCV 3.0)概要
coreopencv_core300.lib画像・行列データ構造の提供、配列操作、図形描画、XMLおよびYAML入出力、コマンドラインパーサー、ユーティリティ機能など
imgprocopencv_imgproc300.libフィルター処理、アフィン変換、エッジ検出、ハフ検出、色変換、ヒストグラム計算、ラベリングなど
calib3dopencv_calib3d300.libカメラキャリブレーション、ステレオ対応点探索
features2dopencv_features2d300.lib特徴点抽出(ORB、BRISK、FREAKなど)
highguiopencv_highgui2d300.libGUI(ウィンドウ表示、画像ファイル、動画ファイルの入出力、カメラキャプチャなど)
mlopencv_ml300.libSVM、決定木、ブースティング、ニューラルネットワークなど
cudaopencv_cuda300.lib画像処理のCUDA(GPGPU)実装
objdetectopencv_objdetect300.libオブジェクト検出(顔検出、人体検出など)
photoopencv_photo300.lib画像修復、ノイズ除去処理、HDR(High Dynamic Range)合成、画像合成など
shapeopencv_shape300.lib形状マッチング
stitchingopencv_stitching300.libパノラマ合成
superresopencv_superres300.lib超解像処理
videoopencv_video300.libオプティカルフロー、カルマンフィルタ、背景差分など
vizopencv_viz300.lib3Dデータの可視化(内部的にVTKを使用)
nonfreeopencv_nonfree300.lib一部の国で特許が取得されている、もしくは使用に制限がある可能性があるアルゴリズム(SIFT、SURF)
                                   主要モジュールとその機能概要

注意:Debugでやっているときは *d.libが必要となるので注意。Releaseのときはdがつかないやつを追加。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
教訓
最初は最新版が使いたくてVisual Studio 2015で挑戦していたが、どうしてもうまくいかない。どこが上手くいかないかというと、コンパイルは通るのだが、実際に動かす段階でDLLの参照(特徴点抽出)でエラーがでる。どうやら、原因は2つ。
1.Visual Studio 2013 と 2015のc++のコンパイラは異なる。
2.OpenCVは異なるコンパイラから生成されたDLLを用いると、使う関数(これ重要)によってはエラーがでる。最低限動かすだけならでないこともある。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
参考:
OpenCVのインストール
http://www.buildinsider.net/small/opencv/02

0 件のコメント:

コメントを投稿