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) | 概要 |
---|---|---|
core | opencv_core300.lib | 画像・行列データ構造の提供、配列操作、図形描画、XMLおよびYAML入出力、コマンドラインパーサー、ユーティリティ機能など |
imgproc | opencv_imgproc300 | フィルター処理、アフィン変換、エッジ検出、ハフ検出、色変換、ヒストグラム計算、ラベリングなど |
calib3d | opencv_calib3d300 | カメラキャリブレーション、ステレオ対応点探索 |
features2d | opencv_features2d | 特徴点抽出(ORB、BRISK、FREAKなど) |
highgui | opencv_highgui2d | GUI(ウィンドウ表示、画像ファイル、動画ファイルの入出力、カメラキャプチャなど) |
ml | opencv_ml300.lib | SVM、決定木、ブースティング、ニューラルネットワークなど |
cuda | opencv_cuda300.lib | 画像処理のCUDA(GPGPU)実装 |
objdetect | opencv_objdetect300 | オブジェクト検出(顔検出、人体検出など) |
photo | opencv_photo300.lib | 画像修復、ノイズ除去処理、HDR(High Dynamic Range)合成、画像合成など |
shape | opencv_shape300.lib | 形状マッチング |
stitching | opencv_stitching300 | パノラマ合成 |
superres | opencv_superres300 | 超解像処理 |
video | opencv_video300.lib | オプティカルフロー、カルマンフィルタ、背景差分など |
viz | opencv_viz300.lib | 3Dデータの可視化(内部的にVTKを使用) |
nonfree | opencv_nonfree300 | 一部の国で特許が取得されている、もしくは使用に制限がある可能性があるアルゴリズム(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 件のコメント:
コメントを投稿