OpenCV3.1.0のビルド方法(GUI編)

2019年6月24日

はじめに

以前はWindows環境ではコンパイル済みのバイナリが準備されていたが、最近はソースからビルドして使用することが前提となっている。

基本はソースを準備して、CMakeを使って開発環境に合わせたプロジェクトを生成し、開発環境でビルドを行うという手順であるが、操作が複雑であり、設定できるオプションが多岐にわたるため、一連のビルド方法をまとめてみた。

OpenCVのソースの準備

OpenCV公式配布ページからopencv-3.1.0.exeをダウンロードする。

opencv-3.1.0.exeファイルを実行する。

Extract toにopencv-3.1.0.exeが保管されているフォルダが表示されている。ファイルの展開場所を変更する場合は[…]ボタンを押して展開先のフォルダを指定した後、[Extract]ボタンを押すとファイルの展開が始まる。展開が終わると展開先に指定した(Extract toに表示されていた)フォルダ直下に「opencv」というフォルダができていて、その中にファイルができている。

フォルダにバージョン場号を付加しておくと複数のバージョンを同時に管理する場合に都合がいいので「opencv」を「opencv310」にリネームする。

筆者の環境では「opencv」フォルダの中にopencv-3.1.0.exeをダウンロードし、ソースファイルの展開もこのフォルダの直下に行った。なので、zipファイル展開直後は「opencv」、リネームして「opencv310」という形になっている。

CMakeによるプロジェクトの生成

公式ページからダウンロードしてきたソースファイルはそのままではビルドすることができず、開発環境に合わせてCMakeを使ってプロジェクトを生成する必要がある。
CMakeはあらかじめCMake公式サイトからダウンロードインストールしておく。

CMakeを起動すると下記のようなウインドウが開く。

Where is souce codeにソースコードの格納場所(\opencv\opencv310\sources)を記述し、Where to build the binariesにプロジェクトの生成場所を指定する。テキストボックスに直接記述してもよいし、テキストボックス横のボタンを押してフォルダ選択ダイアログから選択しても良い。

ソースコードの格納場所とプロジェクトの生成場所の指定ができたら[Configure]ボタンを押す。

開発環境選択のダイアログボックスが表示されるので使用する開発環境をプルダウンリストから選択する。

[Finish]ボタンを押す。

処理の実行状況が下方のテキストボックスに表示される。

処理が一通り終了するとウインドウ中央部に赤く表示されたオプション選択リストが表示される。ここでオプションの選択を行う。

表示されるオプションは非常に多いが、代表的なものをここで上げておく。

オプションを組み込む場合はそれぞれの項目をONする(チェックをつける)。

また、ライブラリの格納場所などはフォルダを指定する。

目的によって選ぶオプションは変わってくると思うが、下表の黄色で塗りつぶした項目は筆者自身の経験から利用者の状況に合わせて選択するしないを判断する機会が多いオプションだと思う。それ以外のオプションについては基本デフォルトでも問題ないが、一度軽く眼を通しておくのが良いと思う。(筆者自身もすべてのオプションの意味を熟知している訳ではないです。)

なお、並列処理フレームワークのCUDA、TBB、線形代数ライブラリEigen、GUI拡張モジュールQtを使用する場合はモジュールを別途準備する必要がある。

配布元URL(2016年3月18日現在)

CUDA:https://developer.nvidia.com/cuda-downloads

TBB:https://www.threadingbuildingblocks.org/download

Eigen:http://eigen.tuxfamily.org

Qt:http://www.qt.io/download-open-source/

 

ビルド対象

CMakeオプション

概要

BUILD_DOCS

ドキュメントを自動生成する

BUILD_EXAMPLES

サンプルプログラムをビルドする

BUILD_TESTS

テストプログラムをビルドする

BUILD_PERF_TESTS

パフォーマンステストプログラムをビルドする

BUILD_SHARED_LIBS

ONでDLLを生成、OFFでStaticLIBを生成する

 

ビルドモジュール

CMakeオプション

概要

BUILD_opencv_core

coreモジュールをビルド対象にする

BUILD_opencv_imgproc

imgprocモジュールをビルド対象にする

BUILD_opencv_highgui

highguiモジュールをビルド対象にする

 

組み込む並列処理フレームワーク

CMakeオプション

概要

WITH_CUDA

CUDA実装を有効にする(GPU)

WITH_OPENCL

OpenCL実装を有効にする(CPU/GPU)

WITH_TBB

Intel TBB実装を有効にする(CPU)

TBBを有効にすると後の行程で関連するディレクトリの位置を入力する必要がある。

 

画像フォーマットの拡張

CMakeオプション

概要

WITH_JPEG

JPEG形式の画像ファイルを扱えるようにする

WITH_JASPER

JPEG2000形式の画像ファイルを扱えるようにする

WITH_OPENEXR

OpenEXR形式の画像ファイルを扱えるようにする

WITH_PNG

PNG形式の画像ファイルを扱えるようにする

WITH_TIFF

TIFF形式の画像ファイルを扱えるようにする

 

動画入出力機能で用いられるフレームワーク

CMakeオプション

概要

WITH_FFMPEG

動画入出力機能でFFMPEGを使用する

WITH_VFW

動画入出力機能でVFWを使用する

WITH_DSHOW

動画入出力機能でDirectShowを使用する

WITH_MSMF

動画入出力機能でMicrosoft Media Foundationを使用する

 

線形代数ライブラリEigenの組み込み

CMakeオプション

概要

WITH_EIGEN

Eigenの実装を有効にする

EIGEN_INCLUDE_PATH

Eigenの格納場所を指定する

Eigenを有効にする場合EIGEN_INCLUDE_PATHもあわせて指定する必要がある。

 

GUI拡張モジュールの組み込み

CMakeオプション

概要

WITH_QT

Qtを使ってGUI機能を拡張する

WITH_OPENGL

OpneGLの実装を有効にする

Qtを有効にした場合、後の行程で関連するディレクトリの入力を求められる。

 

インストール先の指定

CMakeオプション

概要

CMAKE_INSTALL_PREFIX

インストール先のパスを指定する

デフォルトはWhere to build the binariesで指定したパスの直下の「install」フォルダが指定されている。(基本的には変更不要)

 

オプション指定後、[Configure]ボタンを押す。

追加で設定しなければならない項目がある場合にはErrorを示すダイアログボックスが表示されるので、[OK]ボタンを押す。

追加指定しなければならない項目が赤く表示されるので、それぞれの項目を指定していく。

追加で指定しなければならない代表的な項目は次の通り。指定するオプションによって表示される項目が変わるので表示される項目にあわせてしてする。指定したライブラリのインストール元をしてする指示が多い。

 

Qt関連のディレクトリ

CMakeオプション

概要

QT_QMAKE_EXECUTABLE qmake.exeの格納場所を指定する。Qtの「bin」フォルダの直下にある。
Qt5Concurrent_DIR Qtの「lib/cmake/Qt5Concurrent」フォルダを指定する。
Qt5Core_DIR Qtの「lib/cmake/Qt5Core」フォルダを指定する。
Qt5Gui_DIR Qtの「lib/cmake/Qt5Gui」フォルダを指定する。
Qt5OpenGL_DIR Qtの「lib/cmake/Qt5OpenGL」フォルダを指定する。
Qt5Test_DIR Qtの「lib/cmake/Qt5Test」フォルダを指定する。
Qt5Widgets_DIR Qtの「lib/cmake/Qt5Widgets」フォルダを指定する。

 

TBB関連

CMakeオプション

概要

TBB_INCLUDE_DIR

TBBの「include」フォルダを指定する。

TBB_LIB_DIR

TBBのLIBファイルが格納されているフォルダを指定する。

TBB_STDDEF_PATH

「tbb_stddef.h」を指定する。TBBの「include/tbb」に格納されている。

 

BUILD_SHARED_LIBSをOFFにしてスタティックライブラリをビルドするときは以下の項目も表示される場合があるので、ONしておく。デフォルトONなので基本いじる必要はない。

CMakeオプション

概要

BUILD_WITH_STATIC_CRT Static Link Libraryを生成する。

 

すべて指定し終わると再度、[Configure]ボタンを押す。

赤く表示される項目がなくなるまで繰り返し続け、すべての項目の指定が終わったら、[Generate]ボタンを押す。

下方の処理表示テキストボックスに「Generating done」と表示されたらCMakeでの作業は終了。Where to build the binariesで指定したパスの直下に「OpenCV.sln」が生成されている。

 

Visual Studioでのビルド

プロジェクトを生成したときに指定したバージョンのVisual Studioを起動する。

   

メニューから[ファイル]→[開く]→[プロジェクト/ソリューション]を選択する。

   

「プロジェクトを開く」ダイアログボックスが開くので、生成された「OpenCV.sln」を選択し、「開く」ボタンを押す。

   

ソリューションの読み込みが完了するとソリューションエクスプローラに登録されているプロジェクトの一覧が表示される。

メニューから[ビルド]→[構成マネージャー]を選択する。

「構成マネージャー」ダイアログボックスが開くのでプロジェクトの「INSTALL」のビルドのチェックボックスにチェックをつける。この設定をアクティブソリューション構成のDebugとReleaseの両方について行う。すべての設定が終わったら「閉じる」ボタンを押してダイアログボックスを閉じる。

メニューの[ビルド]→[ソリューションのビルド]を選択するとビルド処理が始まる。選択するオプションにもよるがビルドには数分から数十分かかる。

ビルドはReleaseとDebugの両方で行う。

出力ウインドウに処理の状況が表示され、最後に処理結果が表示される。このとき失敗のところが0であればビルド成功である。

「OpenCV.sln」が生成されたフォルダに「install」というフォルダができており、この中にビルドされたファイルが集約されている。

「install」フォルダ内に生成される主なファイルの種類と格納パスは下表の通りである。

ファイル種類

格納フォルダへのパス

ヘッダファイル installinclude
Libファイル installx64vc12lib
DLLファイル installx64vc12bin
staticlibファイル installx64vc12staticlib
サンプルプログラム installx64vc12samples
haar-like 識別器 installetchaarcascades
Local Binary Patterns 識別器 installetclbpcascades

なお、格納フォルダへのパスにあるx64、vc12はビルドする環境によって下表のように変化する。

 

表記

プラットフォーム

x64 64ビット
x32 32ビット

 

表記 Visual Studioのバーション
vc10 Visual Studio 2010
Vc11 Visual Studio 2011
vc12 Visual Studio 2013
Vc14 Visual Studio 2015

 

参考にした記事

初めてのOpenCV開発 ― CMakeを使ったOpenCVのカスタマイズ【OpenCV 2.4.9】 – Build Insider

http://www.buildinsider.net/small/opencv/07

OpenCVの環境構築(OpenCV 2.4.9) – Build Insider

http://www.buildinsider.net/small/opencv/02

OpenCVをスタティックリンクライブラリでビルドする方法 | イメージングソリューション

http://imagingsolution.net/program/opencv/build_opencv231_static_library/