OpenCV3.1.0のビルド方法(GUI編)
はじめに
以前は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/
ディスカッション
コメント一覧
まだ、コメントがありません