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(導入済)
導入方法
(1) OpenCV3.4をダウンロード
まずはOpenCVの公式サイトから3.4.1のSourceをダウンロードします。「Sources」をクリックしましょう。
外部サイト:Releases – OpenCV library
すると、zipファイルがダウンロードされると思います。こちらは任意のフォルダに保存し、zipファイルを解凍してください。
今回はCドライブ直下に「opencv341」というフォルダを作り、作業フォルダとしました。特に複数バージョンのOpenCVを入れて使い分ける可能性がある場合には、バージョンがわかるようなフォルダ名にしておくとよいでしょう。
(2) opencv_contribのダウンロード
次にopencv_contribをダウンロードします。
外部サイト:opencv_contrib(Github)
上記サイトからopencv_contribのソースをダウンロードします。
必ず、ダウンロードしたOpenCVのバージョンと対応するcontribをダウンロードしてください。今回はOpenCV3.4.1なので、3.4.1をダウンロードしました。
同じくダウンロードしたzipファイルを解凍し、さっきと同じく、Cドライブ直下に作成した「opencv341」の中で展開します。
ひとまず、以下のような状態となりました。 これで、必要なファイルについては準備完了です。
(3) CMakeのダウンロード
次にCMakeとVisual Studioを使ってOpenCVのビルドをしていきましょう。
CMakeは様々なコンパイラでビルドを可能とするツールで、今回はCMakeでビルド用のソリューションファイルを作成し、Visual Studioにてビルドします。
まずはじめに、CMakeの公式より、Cmakeの最新バージョンをダウンロードします。
外部サイト:CMake
Download Latest Releaseより、最新版のCMakeをダウンロードしましょう。Windows用のInstallerを選択します。
ダウンロードしたインストーラを起動し、それに従ってCMakeをインストールします。基本的にはデフォルトのまま「Next」でOKです。
保存先も好きな場所を指定してください。今回はCドライブ直下としました。
これにて、CMakeのインストールは完了です。
(4) 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の設定を変更していきます。
<1> CUDAの設定をOFFにする
取りあえず今回はCUDAは使わなくてもOKなので、「WITH_CUDA」「WITH_CUBLAS」「WITH_CUFFT」のチェックは外しました。
<2> opencv_contribモジュールの場所を指定する
また、ここでopencv_contribを含めてビルドをするために、「OPENCV_EXTRA_MODULES_PATH」にダウンロードしたopencv_contribのmodulesファイルを指定します。
私の場合は「C:\opencv341\opencv_contrib-3.4.1\modules」を設定しました。
<3> BUILD_opencv_worldにチェックを入れる(オプション)
デフォルトの設定だと、OpenCVの様々なモジュールがそれぞれ別のファイルとして生成されてしまうのですが、それを統合することができるのがBUILD_opencv_worldの設定です。
これにチェックを入れておくことで、各モジュールがそれぞれの.libを生成することなく、「opencv_world341.lib」「opencv_world341.dll」という一つのライブラリで生成されます。
個人的にはリンクしてしまった方が楽だと思うので、BUILD_opencv_worldにチェックを入れました。
<4> OpenCVのインストール場所の設定(オプション)
こちらもオプションで、デフォルトの設定のままでも大丈夫とは思いますが、この後Visual Studioでビルドした際に生成されるlibやdllファイル一式がインストールされる場所を設定しておきます。
今回は「C:/opencv341/install」としました。インストールしたいフォルダを各自設定してください。
<5> 再度Configureを行い、ソリューションファイルを生成
<1>~<4>の設定後、再度「Configure」をクリックします。
「Configure」が終了したら、引き続き「Generate」をクリックし、終了まで待ちます。「Generating done」が表示されれば、正常終了です。
(5) Visual Studioを用いたビルド
無事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を使って、何かプログラムを書いてみたいと思います。