opencv_contribはOpenCVの拡張モジュール群です。OpenCVの標準機能に加えて、更なる機能が提供されています。
今回はこのopencv_contribの中に使いたいAPIがあったため、Visual Studio 2015でopencv_contribの環境構築をしてみたいと思います。
バージョンは現時点で最新版のOpenCV3.4.1としました。opencv_contribを含まないOpenCVだけの環境構築は、以下の記事をご参照ください。
参考記事:Visual Studio 2015でOpenCV 3.4環境構築
opencv_contribを使いたい場合には、CMakeを用いてソースからビルドをする必要があります。
・Windows 10
・Visual Studio 2015 Community(導入済)
まずはOpenCVの公式サイトから3.4.1のSourceをダウンロードします。「Sources」をクリックしましょう。
外部サイト:Releases – OpenCV library
すると、zipファイルがダウンロードされると思います。こちらは任意のフォルダに保存し、zipファイルを解凍してください。
今回はCドライブ直下に「opencv341」というフォルダを作り、作業フォルダとしました。特に複数バージョンのOpenCVを入れて使い分ける可能性がある場合には、バージョンがわかるようなフォルダ名にしておくとよいでしょう。
次にopencv_contribをダウンロードします。
外部サイト:opencv_contrib(Github)
上記サイトからopencv_contribのソースをダウンロードします。
必ず、ダウンロードしたOpenCVのバージョンと対応するcontribをダウンロードしてください。今回はOpenCV3.4.1なので、3.4.1をダウンロードしました。
同じくダウンロードしたzipファイルを解凍し、さっきと同じく、Cドライブ直下に作成した「opencv341」の中で展開します。
ひとまず、以下のような状態となりました。
次にCMakeとVisual Studioを使ってOpenCVのビルドをしていきましょう。
CMakeは様々なコンパイラでビルドを可能とするツールで、今回はCMakeでビルド用のソリューションファイルを作成し、Visual Studioにてビルドします。
まずはじめに、CMakeの公式より、Cmakeの最新バージョンをダウンロードします。
外部サイト:CMake
Download Latest Releaseより、最新版のCMakeをダウンロードしましょう。Windows用のInstallerを選択します。
ダウンロードしたインストーラを起動し、それに従ってCMakeをインストールします。基本的にはデフォルトのまま「Next」でOKです。
保存先も好きな場所を指定してください。今回はCドライブ直下としました。
これにて、CMakeのインストールは完了です。
CMakeを使ってOpenCVをビルドしていきます。
CMakeを起動し、OpenCVのsourceフォルダを先ほどダウンロードしたOpenCVのダウンロード先のsourceフォルダに設定します。私の場合は、
Where is the source code:「C:/opencv341/opencv-3.4.1」
Where to build the binaries :「C:/opencv341/build」
としました。
その後「Configure」をクリックします。
buildフォルダがないので作れという指示が出るかもしれませんが、Yesで先に進みましょう。
すると以下のようなウィンドウが出ますが、今回はVisual Studio 2015(64ビット)を用いるので、以下のように設定しました。
「Configuring done」が出れば成功です。
ここから、ビルドするOpenCVの設定を変更していきます。
取りあえず今回はCUDAは使わなくてもOKなので、「WITH_CUDA」「WITH_CUBLAS」「WITH_CUFFT」のチェックは外しました。
また、ここでopencv_contribを含めてビルドをするために、「OPENCV_EXTRA_MODULES_PATH」にダウンロードしたopencv_contribのmodulesファイルを指定します。
私の場合は「C:\opencv341\opencv_contrib-3.4.1\modules」を設定しました。
デフォルトの設定だと、OpenCVの様々なモジュールがそれぞれ別のファイルとして生成されてしまうのですが、それを統合することができるのがBUILD_opencv_worldの設定です。
これにチェックを入れておくことで、各モジュールがそれぞれの.libを生成することなく、「opencv_world341.lib」「opencv_world341.dll」という一つのライブラリで生成されます。
個人的にはリンクしてしまった方が楽だと思うので、BUILD_opencv_worldにチェックを入れました。
こちらもオプションで、デフォルトの設定のままでも大丈夫とは思いますが、この後Visual Studioでビルドした際に生成されるlibやdllファイル一式がインストールされる場所を設定しておきます。
今回は「C:/opencv341/install」としました。インストールしたいフォルダを各自設定してください。
<1>~<4>の設定後、再度「Configure」をクリックします。
「Configure」が終了したら、引き続き「Generate」をクリックし、終了まで待ちます。「Generating done」が表示されれば、正常終了です。
無事CMakeでの処理が完了すると、設定したビルド先のフォルダにVisual Studioのソリューションができていると思います。
私の場合は「C:\opencv341\build」に設定したので、このフォルダ内にある「OpenCV.sln」を起動しました。
ビルド方法ですが、「ALL_BUILD」「INSTALL」という二つのプロジェクトをパッチビルドします
ビルドには時間が掛かるので気長に待ちましょう。
ビルドが終了したら、「(4)-<4> OpenCVのインストール場所と設定」で設定したフォルダに、OpenCVのファイル一式ができていると思うので確認してみましょう。
・ヘッダが「install\include」
・DLLが「install\x64\vc14\bin」
・LIBが「install\x64\vc14\lib」
の中に生成されていれば、インストールは完了しています。
これらのフォルダにパスを通すことで、contribモジュールを含めたOpenCVを利用したプログラムを作ることができます。
このままテストコードの実行と行きたいところですが、少々記事が長くなってしまったので、ビルドが完了したここで一旦記事を畳みたいと思います。
次回は、インストールされたopencv_contribを使って、何かプログラムを書いてみたいと思います。