OpenCV 画像処理

OpenCV3.1をopencv_contrib付きでVisual Studio2013でビルドしてインストールする

投稿日:

スポンサードリンク

はじめに

OpenCV3.1でトラッキングがしたいと思いインストーラでインストールしたのですが、どうやらトラッキング系のモジュールはデフォルトでは付いていないらしく、opencv_contribというモジュールをインストールする必要があるようでした。ただ、このcontribですが、インストーラ形式ではなく、opencvと一緒に自分でビルドする必要があるのですが、それまでになんだかんだ苦戦したのでメモを残しておきます。

環境

Windows7 64bitですが、32bit版をインストールしました。

ダウンロード

まずは、CMakeをインストールします。これは省略します。

そして、OpenCVのソースコードをGitHubSourceForgeから「Source Code」をクリックしてダウンロードしてきます。GitHubはたまにサーバーが落ちていたりして、不完全な状態でダウンロードしてくるケースがあったので解凍の際エラーが出ていないかどうか気を付けてください。

次に、opencv_contribをダウンロードしてきます。ここで気を付けていただきたいのは、そのままダウンロードするのではなくOpenCV3.1バージョンのものをダウンロードする必要があるということです。タブの「Releases」をクリックするとこれまでのリリース物一覧が出てきますので、そこから「3.1.0」をzipボタンなどからダウンロードします。


↑releasesを選択


↑インストールしようとしているOpenCVのバージョンに合わせてダウンロード

CMake

CMakeを起動してダウンロードしてきたソースとビルド先を記入します。自分はDドライブ直下のdevというフォルダを作って、そこにダウンロードしてきたOpenCVのソースを「opencv-3.1.0」、opencv_contribのソースを「opencv_contrib-3.1.0」とリネームして設置しました。

後は「Configure」とすると何でビルドするか選択画面が出てくるので「Visual Studio 12 2013」を私は選択しました。

そして、Configureが終わるとエラーが出るので適宜必要なものをインストールするか、ビルド対象にならないようにチェック項目をはずすかします。ここで、必ず「OPENCV_EXTRA_MODULES_PATH」にopencv_contribのmodulesのパス「D:/dev/opencv_contrib-3.1.0/modules」を記入します。

気を付けてほしいのはパスをコピペして記入する場合、ディレクトリの区切りが「¥」になる場合があると思いますが、「/」に直さないとエラーがでることがあるので注意してください。

自分がやった感じですとトラッキングを試す分には新規にソフトやライブラリをインストールする必要はありませんでした。エラーが出なくなったら「Generate」を押します。

一応自分がチェックを外した項目を一覧にします。環境に合わせて適宜変えてください。

BUILD_opencv_bioinspired
BUILD_opencv_hdf
BUILD_opencv_python2
BUILD_opencv_python3
WITH_1394
WITH_CUDA
WITH_MATLAB
WITH_QT
WITH_VTK
WITH_WEBP

※一部はなんとなくで外しています。はずして大丈夫かの検証は適宜実施してください。

Visual Studioでビルド

CMakeがうまくいっているとopencv-3.1.0/buildフォルダ内に「OpenCV.sln」ファイルができているのでそれをVisualStudioで開きます。
開いたら32ビット版か64ビット版かで構成マネージャで変更してください。今回は「Win32」にしました。


↑項目にない場合は構成マネージャーから新規作成します。

そして、ソリューションエクスプローラーの「INSTALL」を右クリックして「スタートアッププロジェクトに設定」ののちビルドします。このビルドは数十分かかりますので気長に待ちます。これをDebug版とRelease版の両方やります。(Debug版はライブラリファイルやDLLファイルの末尾に「d」がつく)。

ここでエラーが出てもDLLやLIBファイルはできています。しかし、実際プロジェクトを新規作成して実行してみるとビルドは通るのですがCVのモジュールの実行時に例外が発生して正常に動かせなかったです。ですのでビルド時のエラーが消えるまでCMakeとVisualStudioの間を往復しました。この際でたエラーのダイジェストを紹介します。

HDF5でエラー

ビルド時「error C2015: 定数式が必要です。」などのエラーが大量発生してしまいました。エラーの該当箇所「hdf5.hpp」を見てみると配列の宣言の方法に問題があるようです。

ぱっと見C++でできなさそうな書き方をされています。ちょっと自分には手に負えなかったのでCMakeの際にHDF関係のチェック(BUILD_opencv_hdf)をはずしてビルド対象外として再度ビルドしました。(ちょっと調べてみると何かのデータセットやそのフォーマット関係?のようでしたので不要と判断しました。)

bioinspiredでエラー

bioinspired関係のエラーが出ていたので、CMakeの際「BUILD_opencv_bioinspired」のチェックを外して再度ビルドしました。

Pythonでエラー

Pythonは32bit環境のビルドのとき、64bitと32bitで食い違っているという旨のエラーが出たのではずしました。Python版の利用の際は64ビット版を使えということだと思います。

設定

今回のビルドの成果物は下記になります。(今回のは32bit版です。64ビット版ですと「x86」→「x64」となっていると思います)

インクルードディレクトリ:「D:\dev\opencv-3.1.0\build\install\include」
ライブラリディレクトリ:「D:\dev\opencv-3.1.0\build\install\x86\vc12\lib」
DLLディレクトリ「D:\dev\opencv-3.1.0\build\install\x86\vc12\bin」

インクルードディレクトリとライブラリディレクトリはそれぞれVisualStudioのプロジェクトの設定で「C/C++」→「追加のインクルードディレクトリ」、「リンカー」→「追加のライブラリディレクトリ」にDebugとReleaseの両方設定します。この設定はプロジェクト毎にする必要があります。
DLLのディレクトリは環境変数に追加します。

まとめ

OpenCV3.1をopencv_contrib付きでビルドしました。
Tracking APIを使ってトラッキングをしてみました。

スポンサードリンク
Amazonリンク
参考:mementoo.info

-OpenCV, 画像処理

Copyright© めめんと , 2020 All Rights Reserved Powered by AFFINGER5.