A certain engineer "COMPLEX"

開発メモ その55 OpenCV 3.2のContribモジュールをビルドする

Problem


OpenCVには拡張モジュールと呼ばれる標準のパッケージには含まれず、自分でビルドすることで利用可能なライブラリ群がある。
それをビルドする際、罠に嵌まったのでメモ。

Solution


基本設定

拡張モジュールはhttps://github.com/opencv/opencv_contrib/releasesから取得します。
また、拡張モジュールのビルドに本体であるOpenCVのソースが必要なので、http://opencv.org/releases.htmlからcontribと同じバージョンのソースをダウンロードします。

ダウンロードすると2つのzipが入手できますので、それを適当なフォルダに展開します。
展開先をc:\srcとすると、

  • c:\src\opencv_contrib-3.2.0
    • doc
    • modules
    • samples
    • ...
  • c:\src\oopencv-3.2.0
    • 3rdparty
    • apps
    • ...

という構成になるはずです。

CMake

CMakeのGUIを起動し、下記のテキストボックスに記載した値を入力します。

  • Where is the source code
    • c:\src\oopencv-3.2.0 を指定
  • Where to build the binaries
    • c:\src\oopencv-3.2.0\build を指定

この状態で、一度Configureを押下します。
押下すると、ダイアログでプロジェクトの形式を聞かれます。
これは拡張モジュールを利用するプロジェクトに応じて決めます。
今回はVisual Studio 14 2015 Win64を選択しました。
ラジオボタンの選択は、Use default native compilersでOKです。
選択完了後、Finishを押下します。

OPENCV_EXTRA_MODULES_PATH

Configure押下後、画面中央のリストにたくさん値が現れるので、OPENCV_EXTRA_MODULES_PATHc:/src/opencv_contrib-3.2.0/modulesを設定します。
注意するのは、(バックスラッシュ)ではなく/(スラッシュ)でパスを指定することです。
さもなくば、

Call Stack (most recent call first):
modules/CMakeLists.txt:7 (ocv_glob_modules)

というエラーに遭遇します。

IPP

Intel Performance Primitivesが無いと

CMake Error at cmake/OpenCVFindIPP.cmake:243 (include):
include could not find load file:

みたいなエラーがでます。
エラーが発生したら、WITH_IPPのチェックボックスをオフにします。

CUDA

GPUを搭載していないなら、WITH_CUDAのチェックボックスをオフにします。
さもなくば、Visual Studioでのビルド時に大量のエラーに遭遇します。

Generate

エラーが無くなったら、Configuring doneと表示されるので、Generateを押下します。
すると、c:\src\oopencv-3.2.0\buildOpenCV.slnが作成されるので、Visual Studioで開きます。
ソリューションエクスプローラーからCMakeTargets\INSTALLを右クリックしてスタートアッププロジェクトに指定します。
その後、ソリューションをビルドすれば、

  • dll
    • c:\src\opencv-3.2.0\build\bin\Releaseまたはc:\src\opencv-3.2.0\build\bin\Debug
  • lib
    • c:\src\opencv-3.2.0\build\lib\Releaseまたはc:\src\opencv-3.2.0\build\lib\Debug
  • header
    • c:\src\opencv-3.2.0\build\install\include

に生成されます。

コメントを残す

メールアドレスが公開されることはありません。

%d人のブロガーが「いいね」をつけました。