前のチュートリアル: Eclipse で OpenCV を使う (プラグイン CDT) 次のチュートリアル: 「Microsoft Visual Studio」内で OpenCV を使ってアプリケーションをビルドする方法
原著者 Bernát Gábor
互換性 OpenCV >= 3.0
警告 このチュートリアルには古い情報が含まれている可能性がある。
ここでの説明は Windows 7 SP1 で検証した。とはいえ、他の比較的新しいバージョンの Windows OS でも動作するはずである。以下に説明する手順に従った後でエラーが発生した場合は、遠慮なく OpenCV Q&A フォーラム から我々に連絡してほしい。可能な限り手助けする。
覚え書き OpenCV ライブラリを使うには2つの選択肢がある: ビルド済みライブラリを使ったインストール または ソースファイルから独自のライブラリを作成してインストール である。前者の方が容易に完了できるが、最新の Microsoft Visual Studio IDE でコーディングしていて、かつ我々がライブラリに統合している最先端技術を活用しない場合にのみ機能する。 .. _Windows_Install_Prebuild:
ビルド済みライブラリを使ったインストール
お好みの Web ブラウザを起動し、Sourceforge 上の我々のページ へ移動する。
使いたいビルドを選んでダウンロードする。
管理者権限を持っていることを確認する。自己解凍アーカイブを展開する。
以下に示すように、選んだパスにインストールされたことを確認できる。
インストールを完了するには、OpenCV 環境変数を設定し、システムのパスに追加する のセクションへ進む。
git-bash (バージョン>=2.14.1) と cmake (バージョン >=3.9.1) を使ったインストール
cmake (バージョン >=3.9.1) をダウンロードしてインストールする必要がある。インストール時に cmake を PATH 変数に追加しなければならない。
git-bash (バージョン>=2.14.1) をインストールする必要がある。インストール時に git は PATH 変数に追加しないこと。
git-bash を実行する。コマンドラインウィンドウが表示される。ここでは opencv と opencv_contrib を c:/lib にビルドしたいものとする。
git コマンドラインで次のコマンドを入力する (フォルダが存在しない場合) :
このスクリプトを installOCV.sh という名前で c:/lib に保存する #!/bin/bash -e
myRepo=$(pwd)
CMAKE_GENERATOR_OPTIONS=-G"Visual Studio 16 2019"
#CMAKE_GENERATOR_OPTIONS=-G"Visual Studio 15 2017 Win64"
#CMAKE_GENERATOR_OPTIONS=(-G"Visual Studio 16 2019" -A x64) # CMake 3.14+ is required
if [ ! -d "$myRepo/opencv" ]; then
echo "cloning opencv"
git clone https://github.com/opencv/opencv.git
else
cd opencv
git pull --rebase
cd ..
fi
if [ ! -d "$myRepo/opencv_contrib" ]; then
echo "cloning opencv_contrib"
git clone https://github.com/opencv/opencv_contrib.git
else
cd opencv_contrib
git pull --rebase
cd ..
fi
RepoSource=opencv
mkdir -p build_opencv
pushd build_opencv
CMAKE_OPTIONS=(-DBUILD_PERF_TESTS:BOOL=OFF -DBUILD_TESTS:BOOL=OFF -DBUILD_DOCS:BOOL=OFF -DWITH_CUDA:BOOL=OFF -DBUILD_EXAMPLES:BOOL=OFF -DINSTALL_CREATE_DISTRIB=ON)
set -x
cmake "${CMAKE_GENERATOR_OPTIONS[@]}" "${CMAKE_OPTIONS[@]}" -DOPENCV_EXTRA_MODULES_PATH="$myRepo"/opencv_contrib/modules -DCMAKE_INSTALL_PREFIX="$myRepo/install/$RepoSource" "$myRepo/$RepoSource"
echo "************************* $Source_DIR -->debug"
cmake --build . --config debug
echo "************************* $Source_DIR -->release"
cmake --build . --config release
cmake --build . --target install --config release
cmake --build . --target install --config debug
popd
このスクリプトでは VS 2015 を64ビットで使うものとする CMAKE_GENERATOR_OPTIONS=-G"Visual Studio 14 2015 Win64"
そして opencv は c:/lib/install/opencv にインストールされる -DCMAKE_INSTALL_PREFIX="$myRepo/install/$RepoSource"
Perf テストなし、テストなし、ドキュメントなし、CUDA なし、サンプルなしで CMAKE_OPTIONS=(-DBUILD_PERF_TESTS:BOOL=OFF -DBUILD_TESTS:BOOL=OFF -DBUILD_DOCS:BOOL=OFF -DBUILD_EXAMPLES:BOOL=OFF)
git コマンドラインで次のコマンドを入力する :
コーヒーでも1、2杯飲んで待つ... opencv の準備が整う : これで完了!
次回このスクリプトを実行すると、opencv と opencv_contrib が更新され再ビルドされる。
ソースファイルから独自のライブラリを作成してインストール
このチュートリアルの内容は、YouTube 上で公開されている次の動画の中でも確認できる: パート1 および パート2 。
VIDEO
VIDEO
警告
上記の動画はとうの昔に古くなっており、不正確な情報を含んでいる。それらの動画で説明されている解決策はもはやサポートされておらず、インストールを壊してしまう可能性さえあるため注意すること。
独自のライブラリをビルドする場合は、我々の Git リポジトリ からソースファイルを取得できる。
OpenCV ライブラリをゼロからビルドするには、あらかじめいくつかのツールをインストールしておく必要がある:
お好みの IDE (できれば)、または実際にバイナリファイルを生成する CC++ コンパイラ。ここでは Microsoft Visual Studio を使う。ただし、有効な CC++ コンパイラを備えた他の任意の IDE を使ってもよい。
CMake 。OpenCV のソースファイルから (選んだ IDE 用の) プロジェクトファイルを生成する優れたツールである。これにより、ニーズに正確に適合するバイナリファイルを作成するために、OpenCV のビルドファイルを簡単に構成することもできる。
OpenCV のソースファイルを取得するための Git。このための優れたツールが TortoiseGit である。あるいは、我々の Sourceforge 上のページ からソースファイルのアーカイブ版をダウンロードするだけでもよい。
OpenCV は複数の形態で提供される。単体で動作する「core」セクションがある。とはいえ、OpenCV が活用できるサービスを提供する、サードパーティ製のツールやライブラリがいくつか存在する。これらは OpenCV の機能をさまざまな面で向上させる。それらのいずれかを使うには、ダウンロードしてシステムにインストールする必要がある。
Python ライブラリ は OpenCV の Python インタフェース をビルドするために必要である。当面はバージョン 2.7.{x} を使うこと。これは OpenCV ドキュメント をビルドしたい場合にも必須である。
Numpy は Python 向けの科学計算パッケージである。Python インタフェース に必要である。
Intel Threading Building Blocks (TBB ) は、並列コードスニペットのために OpenCV 内部で使われる。これを使うことで、OpenCV ライブラリがシステムの CPU が持つすべてのコアを確実に活用できるようになる。
Intel Integrated Performance Primitives (IPP ) は、OpenCVライブラリの色変換、Haar学習、DFT関数の性能を向上させるために利用できる。ただし無料のサービスではない点に注意。
OpenCVは、Qtフレームワーク を使うことで、デフォルトのものよりも少し凝った、より便利なグラフィカルユーザーインターフェイスを提供する。これが何を提供するのか概要を素早く把握するには、ドキュメントのhighgui モジュール内のQt New Functions セクションを参照するとよい。フレームワークのバージョン4.6以降が必要である。
Eigen は線形代数のためのC++テンプレートライブラリである。
最新の CUDA Toolkit を使えば、GPU内部の力を活用できる。これにより一部のアルゴリズム(例: HOG記述子)の性能が劇的に向上する。より多くのアルゴリズムをGPU上で動作させることは、OpenCVチームの継続的な取り組みである。
ライブラリがこのハイダイナミックレンジ (HDR) 画像ファイル形式を扱うには、OpenEXR のソースファイルが必要である。
OpenNIフレームワークには、音声コマンド認識、ハンドジェスチャー、身体動作の追跡といった手法を通じてデバイスとの自然なインタラクションをサポートする一連のオープンソースAPIが含まれている。ビルド済みのバイナリはここ で入手できる。OpenNI と OpenNI2 のソースコードもGithubで入手可能である。
Doxygen はドキュメント生成ツールであり、実際にOpenCVのドキュメント を作成するためのツールである。
ここからは、フルビルド(上記のすべてのフレームワーク、ツール、ライブラリを使用する)を行うために従うべき手順を説明する。これらの一部のサポートが不要であれば、このセクションは自由にスキップしてよい。
ライブラリのビルド
有効なコンパイラを備えた動作するIDEが用意されていることを確認する。Microsoft Visual Studioの場合は、インストールして起動できることを確認するだけでよい。
CMake をインストールする。ウィザードに従うだけでよく、パスに追加する必要はない。デフォルトのインストールオプションで問題ない。
公式サイト から最新版のmsysgitをダウンロードしてインストールする。ポータブル版もあり、これは展開するだけでGitのコンソール版を利用できる。これで十分という人もいるだろう。
TortoiseGit をインストールする。使用しているOSの種類に応じて32ビット版か64ビット版を選ぶ。インストール中に(自動的に行われない場合は)msysgitの場所を指定する。ウィザードに従う。ほとんどの場合デフォルトのオプションで問題ない。
Choose a directory in your file system, where you will download the OpenCV libraries to. I recommend creating a new one that has short path and no special characters in it, for example D:/OpenCV. For this tutorial, I will suggest you do so. If you use your own path and know, what you are doing – it is OK.
選択したディレクトリにリポジトリをクローンする。Clone ボタンをクリックすると、どのリポジトリからソースファイルをダウンロードするか(https://github.com/opencv/opencv.git )、およびどのディレクトリへ(D:/OpenCV)かを選択するウィンドウが表示される。
OKボタンを押し、リポジトリはかなり重いダウンロードなので辛抱強く待つ。インターネット接続によってはいくらか時間がかかる。
In this section, I will cover installing the 3rd party libraries.
Pythonライブラリ をダウンロードし、デフォルトのオプションでインストールする。他にいくつかのpython拡張が必要になる。幸い、これらのインストールはすべて Setuptools という便利なツールで自動化できる。これも同様にダウンロードしてインストールする。
Numpyを最も簡単にインストールする方法は、sourceforgeのページ からバイナリをダウンロードするだけである。使用しているpythonのバージョン(つまりバージョン 2.7 用)に正確に合ったバイナリをダウンロードしてインストールすること。
Intel Threading Building Blocks (TBB ) については、ソースファイルをダウンロードしてシステム上のディレクトリ内に展開する。例えば D:/OpenCV/dep とする。Intel Integrated Performance Primitives (IPP ) のインストールも同様である。アーカイブの展開には 7-Zip アプリケーションの使用を推奨する。
Eigen ライブラリの場合も、ダウンロードして D:/OpenCV/dep ディレクトリに展開するだけである。
OpenEXR についても上記と同様である。
OpenNIフレームワーク については、開発ビルド と PrimeSensor Module の両方をインストールする必要がある。
CUDAについては、ここでも2つのモジュールが必要である。最新の CUDA Toolkit と CUDA Tools SDK である。OSに応じて32ビットまたは64ビットのセットアップを使い、complete オプションで両方をダウンロードしてインストールする。
Qtフレームワークの場合は、(32ビットコンパイラを備えたMicrosoft Visual Studio 2008を使う場合を除き)バイナリファイルを自分でビルドする必要がある。これを行うには Qt Downloads ページにアクセスする。(インストーラではなく!!!)ソースファイルをダウンロードする:
D:/OpenCV/dep/qt/ のような分かりやすく短い名前のディレクトリに展開する。次にビルドする必要がある。スタートメニューの検索を使って Visual Studio Command Prompt (2010 ) を起動する(あるいはスタートメニューから All Programs –> Microsoft Visual Studio 2010 –> Visual Studio Tools –> Visual Studio Command Prompt (2010) とたどる)。
次に、展開したフォルダへ移動し、このコンソールウィンドウを使ってその中に入る。Install や Make などのファイルを含むフォルダになっているはずである。dir コマンドを使って現在のディレクトリ内のファイルを一覧表示する。このディレクトリに到達したら、次のコマンドを入力する:
configure.exe -release -no-webkit -no-phonon -no-phonon-backend -no-script -no-scripttools
-no-qt3support -no-multimedia -no-ltcg
これが完了するまでに約10〜20分かかる。続いて、はるかに時間のかかる(容易に1時間以上かかることもある)次のコマンドを入力する:
この後、Windows 7では次のコマンドを使ってQtの環境変数を設定する:
setx -m QTDIR D:/OpenCV/dep/qt/qt-everywhere-opensource-src-4.7.3
また、PathEditor を使って、ビルドしたバイナリファイルのパスをシステムパスに追加する。この例では D:/OpenCV/dep/qt/qt-everywhere-opensource-src-4.7.3/bin である。
覚え書き Qtアプリケーション開発を行う予定であれば、この時点で Qt Visual Studio Add-in もインストールできる。これにより、Qt Creator を使わずにQtアプリケーションを作成・ビルドできる。すべてがVisual Studioにうまく統合される。
次に CMake (cmake-gui) を起動する。ここでもスタートメニューの検索に入力するか、All Programs –> CMake 2.8 –> CMake (cmake-gui) から取得できる。まず、OpenCVライブラリのソースファイルのディレクトリを選択する (1)。次に、OpenCVのバイナリファイルをビルドするディレクトリを指定する (2)。
Configureボタンを押して、使用したいコンパイラ(および IDE )を指定する。64ビットまたは32ビットライブラリを作成するために異なるコンパイラを選べる場合があることに注意。アプリケーション開発で使用するものを選択する。
CMakeが起動し、システム変数に基づいてできるだけ多くのパッケージを自動的に検出しようとする。ビルドに使用するパッケージは WITH –> WITH_X メニュー項目(X はパッケージの略称)で変更できる。以下は、オンまたはオフにできる現在のパッケージの一覧である:
使用したいパッケージをすべて選択し、再び Configure ボタンを押す。ビルドオプションを見やすくするため、バイナリディレクトリ選択の下にある Grouped オプションをオンにしておくとよい。一部のパッケージについては、CMakeが必要なファイルやディレクトリのすべてを見つけられないことがある。その場合、CMakeは(GUIの下部にある)出力ウィンドウにエラーを表示し、そのフィールド値をnot found定数に設定する。例えば:
これらについては、問い合わせのあったディレクトリやファイルのパスを手動で設定する必要がある。この後、再び Configure ボタンを押して、入力した値が受け入れられたかどうかを確認する。すべてのエントリが良好になり、フィールド/値やGUIの出力部分にエラーが見られなくなるまでこれを繰り返す。ここで、間違いなく気に入るであろうオプションを強調しておきたい。ENABLE –> ENABLE_SOLUTION_FOLDERS である。OpenCVは非常に多くのプロジェクトを作成するが、このオプションをオンにすると、それらが Solution Explorer 内でディレクトリにカテゴリ分けされる。私に言わせれば必須の機能である。
さらに、OpenCVのどの部分をビルドするかを選択する必要がある。
BUILD_DOCS -> OpenCVのドキュメントをビルドするための2つのプロジェクトを作成する(HTMLファイルとPDFファイルをビルドするための別々のプロジェクトが用意される)。これらはソリューションと一緒にはビルドされない点に注意。そうするには、これらに対して明示的にビルドプロジェクトコマンドを実行する必要がある。
BUILD_EXAMPLES -> OpenCVには多くのサンプルアプリケーションが付属しており、それらからライブラリの機能の大部分を学べる。これは、OpenCVが自分のコンピュータ上で完全に機能するかどうかを手軽に試すのにも役立つ。
BUILD_PACKAGE -> バージョン2.3以前は、これでOpenCVインストーラをビルドするプロジェクトをビルドできた。これにより、自分のOpenCVを他のシステムに簡単にインストールできた。OpenCVの最新のソースファイルでは、OpenCVのソースを含むzipアーカイブを単に作成する新しいプロジェクトを生成する。
BUILD_SHARED_LIBS -> これにより、(オンにすると)DLLファイルをビルドするか、それ以外の場合は静的ライブラリファイル (*.lib) をビルドするかを制御できる。
BUILD_TESTS -> OpenCVの各モジュールには、それに割り当てられたテストプロジェクトがある。これらのテストプロジェクトをビルドすることも、モジュールが自分のシステム上でも期待どおりに動作することを試すよい方法である。
BUILD_PERF_TESTS -> 多くのOpenCV関数には性能テストもある。性能が気になる場合は、それらをビルドして実行する。
BUILD_opencv_python -> 説明不要。Python言語からOpenCVを使うためのバイナリを作成する。
BUILD_opencv_world -> モジュールごとに1つずつの個別バイナリの集まりではなく、すべてのモジュールを含む単一の "opencv_world" バイナリ(BUILD_SHARED_LIBS に応じて共有ライブラリまたは静的ライブラリ)を生成する。
再び Configure ボタンを押し、エラーが報告されないことを確認する。そうであれば、Generate ボタンを押してCMakeにプロジェクトファイルを作成させることができる。ビルドディレクトリへ移動し、作成された OpenCV ソリューションを開く。上記のオプションをどれだけ選択したかによって、ソリューションにはかなり多くのプロジェクトが含まれることがあるので、起動時のIDEには寛容になること。次に、Release と Debug の両方のバイナリをビルドする必要がある。一方のビルドが終わったら、IDEのドロップダウンメニューを使ってもう一方に切り替える。
最後に、binディレクトリ内にビルドされたバイナリファイルを確認できる:
ドキュメントについては、HTMLドキュメント用に doxygen プロジェクトに対してビルドコマンドを明示的に発行する必要がある。これにより Doxygen が呼び出され、すべての面倒な作業を行う。生成されたドキュメントは build/doc/doxygen/html 内にある。
自分のプロジェクトで使用するヘッダーファイルとバイナリファイルを(ビルド済みバイナリの配布方法と同様に)別のディレクトリに集めるには、Install プロジェクトを明示的にビルドする必要がある。
これにより、Build ディレクトリ内に Install ディレクトリが作成され、ビルドされたすべてのバイナリが1か所に集められる。これは Release 版と Debug 版の両方をビルドした後にのみ使用すること。
ビルドをテストするには、Build/bin/Debug または Build/bin/Release ディレクトリに入り、contours.exe などのアプリケーションをいくつか起動するだけでよい。それらが動作すれば完了である。そうでなければ、何かがひどくおかしくなっている。その場合は、Q&Aフォーラム で私たちに連絡してほしい。すべてが問題なければ、contours.exe の出力は(Qtサポート付きでビルドした場合)次の画像のようになるはずである:
覚え書き GPUモジュール(CUDAライブラリ)を使用する場合は、GPUのドライバも最新版にアップグレードすること。nvcuda.dllの無効なエントリ(または見つからない)を含むエラーメッセージは、主に古いビデオカードドライバが原因である。GPUをテストするには(ビルドした場合)、performance_gpu.exe サンプルアプリケーションを実行する。
OpenCV環境変数を設定し、システムパスに追加する
まず、作業を楽にするために環境変数を設定する。これは、プロジェクトで使用するOpenCVライブラリのビルドディレクトリを保持する。コマンドウィンドウを起動して次を入力する:
setx OpenCV_DIR D:\OpenCV\build\x64\vc14 (suggested for Visual Studio 2015 - 64 bit Windows)
setx OpenCV_DIR D:\OpenCV\build\x86\vc14 (suggested for Visual Studio 2015 - 32 bit Windows)
setx OpenCV_DIR D:\OpenCV\build\x64\vc15 (suggested for Visual Studio 2017 - 64 bit Windows)
setx OpenCV_DIR D:\OpenCV\build\x86\vc15 (suggested for Visual Studio 2017 - 32 bit Windows)
setx OpenCV_DIR D:\OpenCV\build\x64\vc16 (suggested for Visual Studio 2019 - 64 bit Windows)
setx OpenCV_DIR D:\OpenCV\build\x86\vc16 (suggested for Visual Studio 2019 - 32 bit Windows)
setx OpenCV_DIR D:\OpenCV\build\x64\vc17 (suggested for Visual Studio 2022 - 64 bit Windows)
setx OpenCV_DIR D:\OpenCV\build\x86\vc17 (suggested for Visual Studio 2022 - 32 bit Windows)
setx OpenCV_DIR D:\OpenCV\build\x64\vc18 (suggested for Visual Studio 2026 - 64 bit Windows)
setx OpenCV_DIR D:\OpenCV\build\x86\vc18 (suggested for Visual Studio 2026 - 32 bit Windows)
ここでのディレクトリは、OpenCVのバイナリ(展開 またはビルド したもの)がある場所である。プラットフォーム(例: x86の代わりにx64)やコンパイラの種類が異なる場合があるので、適切な値に置き換えること。この中には lib と bin という2つのフォルダがあるはずである。
静的ライブラリをビルドした場合はこれで完了である。そうでなければ、bin フォルダのパスをシステムパスに追加する必要がある。これは、OpenCVライブラリを "ダイナミックリンクライブラリ" (DLL としても知られる)の形で使用するためである。これらの中には、OpenCVライブラリが含むすべてのアルゴリズムと情報が格納されている。オペレーティングシステムは、実行時に必要に応じてのみそれらをロードする。しかしそのためには、オペレーティングシステムはそれらがどこにあるかを知っている必要がある。システムの PATH には、DLLが見つかるフォルダの一覧が含まれている。これにOpenCVライブラリのパスを追加すれば、OSはOpenCVのバイナリが必要になったときにどこを探せばよいか分かる。そうしなければ、OSが見つけられるように、使用するDLLをアプリケーションの実行可能ファイル (exe ) のすぐ隣にコピーする必要があり、多くのプロジェクトで作業する場合は非常に不快である。これを行うには、再び PathEditor を起動し、次の新しいエントリを追加する(アプリケーション内で右クリックしてメニューを表示する):
それをレジストリに保存すれば完了である。ビルドディレクトリの場所を変更したり、別のビルドでアプリケーションを試したくなったりした場合に必要なのは、コマンドウィンドウ内で setx コマンドを使って OPENCV_DIR 変数を更新することだけである。
次に、「Microsoft Visual Studio」内でOpenCVを使ってアプリケーションをビルドする方法 のセクションで、チュートリアルを読み進めることができる。そこでは、Microsoft Visual Studio IDEの助けを借りて、自分のプロジェクトでOpenCVライブラリを使う方法が分かる。