OpenCV入門【3.0対応】(3)

OpenCV入門【3.0対応】(3)

OpenCVの環境構築(OpenCV 3.0/3.1)

2016年3月18日 改訂 (初版: 2014/07/14)

OpenCV 3環境の構築方法として、「公式パッケージを使ったインストール」「CMakeを使ったライブラリのビルド」「NuGetを使ったパッケージインストール」の3ケースを解説。バージョン2.4.9から3.0/3.1に合わせて改訂。

@dandelion1124(http://atinfinity.github.io/
  • このエントリーをはてなブックマークに追加

1. OpenCVの環境構築

1.1 はじめに

 今回の記事では2016/2/5時点で最新のstableリリースであるOpenCV 3.1の環境構築方法について解説します。なお、OpenCV 3.0についても今回紹介する手順と同じ要領で行うことができます。

1.2 環境構築方法

 Windows環境かつVisual Studioで、OpenCVを使ったアプリケーションの開発を行うための主な環境構築方法は以下の3つです。

 これらの方法のメリット、デメリットを以下に示します。

インストール方法 メリット デメリット
公式パッケージ 環境構築が容易である OpenCVの機能を詳細にカスタマイズできない。
プラットフォームごと(Win32、x64)に*1、複数のVisual Studioバージョン向けのライブラリ*2が同梱されているため、ファイルサイズが大きい*3
CMake 有効にするOpenCVの機能を詳細にカスタマイズできる CMakeを用いたカスタマイズ方法に慣れるまで若干敷居が高い
NuGet 環境構築、パス設定が容易である OpenCVの機能を詳細にカスタマイズできない。
ソリューションごとに容量を消費してしまう
各環境構築方法のメリット、デメリット

 以降は、各環境構築方法の詳細について述べていきます*4

  • *1 OpenCVでは「Win32」は「x86」と同義で使われています。OpenCV 3.0の公式パッケージは、32bit(x86)向けと、64bit(x64)向け、それぞれに対してライブラリを提供しています。
  • *2 OpenCV 3.0の公式パッケージには、Visual Studio 2012(以下、VS 2012)向けとVS 2013向けのライブラリ、OpenCV 3.1の公式パッケージにはVS 2013向けとVS 2015向けのライブラリが同梱されています。
  • *3 OpenCV 3.0まではDLL(ダイナミック・リンク・ライブラリ)とスタティックライブラリ両方とも公式パッケージに同梱されていましたが、OpenCV 3.1からはDLLのみに変更となりました。
  • *4 CMakeを使った詳細なカスタマイズ方法については後日、別の記事で解説予定です。

 また、筆者が確認した環境は以下の通りです。

項目 内容
OpenCVバージョン OpenCV 3.1
Visual Studio Visual Studio 2013 Update 5
ビルド構成 x64Release
OS Windows 10 Pro(64bit)
筆者が確認した環境

▲【環境構築方法の一覧】に戻る

2. 公式パッケージを使ったインストール

2.1 公式パッケージの配置

1 OpenCV公式配布ページから[opencv-3.1.0.exe]をダウンロードし、opencv-3.1.0.exeファイルを実行します*5

2 図1のウィンドウが表示されるので、[...]ボタンを押して展開先のディレクトリを指定した後、[Extract]ボタンを押します。なお以降は、C:\devを展開先に選んだものとして説明を行います。この例では[Extract]ボタンを押すと、C:\dev\opencvにOpenCVのファイルが配置されます(opencv-3.1.0.exeファイルは展開すると約2.6GBytes、opencv-3.1.0.exeファイルは展開すると約560MBytesのサイズとなる点にご注意ください)。

図1 パッケージの展開
図1 パッケージの展開

3 生成された「opencv」ディレクトリを(後でOpenCVのバージョンが区別できるように)「opencv-3.1.0」にリネームします。

4 ここまででOpenCVインストールは完了です。

  • *5 OpenCV 3.0以前は、Windows向けパッケージをSourceForgeから入手する必要がありましたが、OpenCV 3.1からはGitHubからも入手できるようになりました。

2.2 環境変数設定

 プログラムからOpenCVのライブラリ(DLL)を参照できるように、Windowsの環境変数へパスを追加する必要があります。ここでは環境変数の設定方法について述べていきます。設定方法は、以下の画面を参考にしてください。

図2 [コントロールパネル]-[システムとセキュリティ]-[システム]の[システムの詳細設定]をクリックします
図2 [コントロールパネル]-[システムとセキュリティ]-[システム]の[システムの詳細設定]をクリックします
図3 [システムのプロパティ]ダイアログの「環境変数」ボタンを押します
図3 [システムのプロパティ]ダイアログの「環境変数」ボタンを押します
図4 [環境変数]ダイアログの[システム環境変数]一覧から「Path」を選択して、[編集]ボタンを押します
図5 後述する変数値を追記して、[OK]ボタンを押します
図5 後述する変数値を追記して、[OK]ボタンを押します

 下記の変数値を一番後ろに追記して、[OK]ボタンを押すと、環境変数の設定は完了です。設定中にVisual Studioを起動していた場合は、一度終了させて再度起動すると、環境変数の設定が反映されます。

変数名 変数値
Path C:\dev\opencv-3.1.0\build\x64\vc12\bin
追記する変数値

 また、上記の変数値はVS 2013、x64ビルドの場合の例ですが、OpenCVのパッケージにはVS 2013/2015(OpenCV 3.0の場合はVS 2012/2013)のバージョンごとに、32bit/64bitのライブラリが同梱されているため*6、図6を参考にして適切な変数値に置き換えてください。

図6 変数値の意味
図6 変数値の意味
  • *6 OpenCV 3.1の場合、32bit(x86、Win32)版が同梱されていない場合があります。

 ここまでで公式パッケージを使った環境構築は完了です。

▲【環境構築方法の一覧】に戻る

3. CMakeを使ったライブラリのビルド

3.1 CMakeとは

 CMakeとは、同じソースツリーからさまざまなコンパイラー向けにビルドを行えるようにするツールで、マルチプラットフォーム対応のOSS(オープンソースソフトウェア)の開発で広く使われています。CMakeを使ったビルドの基本的な流れは以下の通りです。

  • CMake設定ファイル(CMakeLists.txtファイル)の記述を基に、指定したコンパイラー向けのビルド用ファイルを生成する
  • ビルド用ファイルを用いてコンパイラーでビルドする

3.2 CMakeのインストール

 今回の説明では、2016/2/4時点で最新のCMake 3.4.3を用いて環境構築を行うこととします。

1 まず、CMake公式サイトから[cmake-3.4.3-win32-x86.exe]ファイルをダウンロードして実行します。インストーラーが起動するので、基本的にはデフォルトの場所にCMakeを配置してください(デフォルトではC:\Program Files (x86)\CMake以下に配置されます)。

2 また、コマンドプロンプトからCMakeを実行する場合には、環境変数に以下のパスを追加してください(環境変数の設定方法は、「公式パッケージを使ったインストール」の節で説明した方法と同じです)。

変数名 変数値
Path C:\Program Files (x86)\CMake\bin
追記する変数値

 コマンドプロンプトを起動し、cmake --versionコマンドを実行して以下のようなメッセージが表示されていればCMakeの環境変数設定が正しく行われています。

コンソール
cmake version 3.4.3

CMake suite maintained and supported by Kitware (kitware.com/cmake).
CMakeのバージョンを確かめるコマンドの実行例

3.3 OpenCVのソース取得

1 OpenCV 3.1配布ページから[Source code (zip)](=opencv-3.1.0.zip)をダウンロードします。

図7 システム変数の編集
図7 システム変数の編集

2 ダウンロードした「opencv-3.1.0.zip」ファイルを展開して、適当な場所に配置します。以降の説明は「C:\dev\opencv-3.1.0」に配置したものとして説明を行います。

3.4 ソリューションファイル生成

 OpenCVのライブラリをビルドするためのVisual Studioソリューションファイルを、以下の手順で生成します。

図8 CMakeインストール先の「C:\Program Files (x86)\CMake\bin」フォルダー内にある「cmake-gui.exe」ファイルを実行し、所定のパスを設定した後、[Configure]ボタンを押します
図9 [Yes]ボタンを押して処理を続行します
図9 [Yes]ボタンを押して処理を続行します
図10 コンパイラーを指定して、[Finish]ボタンを押します
図10 コンパイラーを指定して、[Finish]ボタンを押します
図11 設定をカスタマイズした後に[Configure]ボタンを押し、最後に[Generate]ボタンを押すことで、ソリューションファイルを生成できます*7
  • *7 システムにCUDAがインストールされており、かつ、「WITH_CUDA」にチェックが入っている場合はCUDAを使った機能を有効にできますが、ビルド時間が非常に長くなる(環境によっては数時間掛かる)ので、不要な方は「WITH_CUDA」のチェックボックスでチェックを外しておきましょう。

3.5 ビルド

 Visual Studioで(本稿の内容通りの場合は「C:\dev\opencv-3.1.0\build」フォルダーにある)「OpenCV.sln」ファイルを実行して、それにより起動したVisual Studioで「INSTALL」プロジェクトをビルドします(図12)。

図12 ソリューション、プラットフォーム構成を指定して「ビルド」を実行します

 ビルドが完了すると、下記のパスにファイルが配置されます。

図13 配置されるファイルパスの一覧

3.6 環境変数設定

 環境変数にOpenCVのDLLファイルが格納されたパスを追加してください。なお以下のパスは、VS 2013でx64ビルドを行ったライブラリを参照する場合の例です。

変数名 変数値
Path C:\dev\opencv-3.1.0\build\install\x64\vc12\bin
追記する環境変数値

 ここまでで、CMakeを使った環境構築は完了です。

▲【環境構築方法の一覧】に戻る

4. NuGetを使ったインストール

4.1 NuGetとは

 NuGetとは、.NET Framework対応のパッケージ管理システムです。また、VS 2012以降から標準でNuGetがインストールされているため、ユーザーは特に追加でインストールすることなくNuGetを利用できます。

 このNuGetを用いることで、非常に簡単にOpenCVの環境を構築できるようになっています。ただし、プロジェクトごとにOpenCVのパッケージをインストールする必要があることから、プロジェクト数が多くなると使用ファイルサイズも大きくなってしまう点に注意が必要です。

 また、記事執筆時点(2016/2/28現在)OpenCV 3.1のNuGetパッケージはコンフィグレーションによっては正常に動作しないようです(今後、修正される可能性があります)。

4.2 Visual Studioプロジェクト作成

 NuGetでOpenCVを導入する前にまず、Visual Studioプロジェクトを作成する必要があります。ここでは新規Visual Studioプロジェクト作成方法について述べていきます。プロジェクト作成方法は、以下の画面を参考にしてください。

図14 [ファイル]-[新規作成]-[プロジェクト]を選択して、新規プロジェクトを作成します
図14 [ファイル]-[新規作成]-[プロジェクト]を選択して、新規プロジェクトを作成します
図15 「Win32 コンソール アプリケーション」テンプレートを選択して、新規プロジェクトを作成します
図16 [コンソール アプリケーション]を選択し、[空のプロジェクト]にチェックを入れて、[完了]ボタンを押します

4.3 OpenCVパッケージのインストール

 4.2でVisual Studioプロジェクトを作成できたので、次にNuGetを使ってOpenCVパッケージをインストールします。インストール方法は、以下の画面を参考にしてください。

図17 プロジェクトを右クリックして、表示されるコンテキストメニューから[NuGet パッケージの管理]を選択します
図17 プロジェクトを右クリックして、表示されるコンテキストメニューから[NuGet パッケージの管理]を選択します
図18 OpenCV3パッケージを検索して、インストールします

 これでプロジェクトに対するOpenCVパッケージ設定は完了です。また、パッケージの実体は、ソリューションファイルと同一階層の「packages」ディレクトリに格納されます。

 なお、インストールしたNuGetパッケージ「OpenCV3」は(執筆時点で)VS 2013のみに対応しています。VS 2015でこのパッケージを使いたい場合は、プロジェクトプロパティの[構成プロパティ]-[全般]-[プラットフォーム ツールセット]を「Visual Studio 2013 (v120)」に切り替える必要があります(切り替えない場合は、以下の作業でエラーが発生しますので注意してください)。

4.4 OpenCVパッケージの導入確認

 NuGetでOpenCVパッケージが正しく導入できたことを確認します。

図19 ソースファイルを右クリックして、表示されるコンテキストメニューから[追加]-[新しい項目]を選択します
図20 「C++ファイル」を選択して、新規ソースファイルを作成します

 先ほど作成したソースファイルに以下のコードを記述します。

C++
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
 
int main(int argc, const char* argv[])
{
  // 幅320px、高さ240pxで赤色の画像データを生成
  cv::Mat redImg(cv::Size(320, 240), CV_8UC3, cv::Scalar(0, 0, 255));

  // 画像表示用のウィンドウを生成
  cv::namedWindow("red", cv::WINDOW_AUTOSIZE);

  // ウィンドウに画像を表示
  cv::imshow("red", redImg);

  // キー入力を待機
  cv::waitKey(0);

  // 作成したウィンドウを全て破棄
  cv::destroyAllWindows();

  return 0;
}
OpenCVパッケージが正しく導入できたことを確認するためのサンプルコード(main.cpp)

 その後、ビルドしてプログラムを実行すると、図21のような赤色で塗りつぶされた画像がウィンドウに表示されます。キー入力を行うと、ウィンドウが閉じられプログラムが終了します。このようになれば、NuGetでOpenCVパッケージが正しく導入できています。

図21 サンプルコードの実行結果
図21 サンプルコードの実行結果

 ここまででNuGetを使った環境構築は完了です。

5. 注意点

 公式パッケージ、CMake、NuGetいずれの環境構築においても、トラブルを回避するために注意した方がよいポイントを以下にまとめます。

  • インストール先として、日本語やスペースを含むパスを指定すると、CMakeがうまくいかないケースがあるので避けた方がよい
  • インストール先として、ファイル操作で管理者権限が必要な特殊ディレクトリ(例:「C:\Program Files (x86)」など)を指定すると、(管理者権限で実行すれば回避できるが、通常の権限だと)ファイル生成に失敗するケースがあるので、避けた方がよい

6. おわりに

 今回は、以下の3ケースのOpenCV環境構築方法を解説しました。

  • 公式パッケージを使ったインストール
  • CMakeを使ったライブラリのビルド
  • NuGetを使ったパッケージインストール

 次回以降は、実際にOpenCVを使ったプログラミングについて解説します。

※以下では、本稿の前後を合わせて5回分(第1回~第5回)のみ表示しています。
 連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。

1. OpenCVとは? 最新3.0の新機能概要とモジュール構成

オープンソースのコンピューター・ビジョン・ライブラリ「OpenCV」 3.0のリリースに合わせて連載再始動! 今回はOpenCVの概要と基本機能を紹介する。ベータ→正式版に合わせて改訂。

2. OpenCV 3.0の新機能(+ 次バージョンのロードマップ)

2015年6月に大望のOpenCVのメジャーバージョンアップ「3.0」が登場した。この新バージョンの新機能をモジュールごとに説明し、次バージョン3.1のロードマップを簡単に紹介する。

3. 【現在、表示中】≫ OpenCVの環境構築(OpenCV 3.0/3.1)

OpenCV 3環境の構築方法として、「公式パッケージを使ったインストール」「CMakeを使ったライブラリのビルド」「NuGetを使ったパッケージインストール」の3ケースを解説。バージョン2.4.9から3.0/3.1に合わせて改訂。

4. 初めてのOpenCV開発 ― Visual Studio/CMake/NuGetでプロジェクト作成【OpenCV 3.0/3.1】

OpenCVを使ったアプリケーションのプロジェクト作成方法として、「Visual Studio」「CMake」「NuGet」の3つの方法を解説する。

5. 初めてのOpenCV開発 ― coreモジュール【OpenCV 3.1.0】

OpenCVのcoreモジュールの概要を解説。そのMatクラスを使って画像データを扱う方法や、ユーティリティ関数、OpenCV 3.0より導入されたUMatクラスを紹介する。

イベント情報(メディアスポンサーです)

Azure Central の記事内容の紹介

Twitterでつぶやこう!


Build Insider賛同企業・団体

Build Insiderは、以下の企業・団体の支援を受けて活動しています(募集概要)。

ゴールドレベル

  • グレープシティ株式会社
  • 日本マイクロソフト株式会社