連載
» 2016年06月01日 05時00分 公開

OpenCV入門【3.0対応】:第4回 初めてのOpenCV開発 ― Visual Studio/CMake/NuGetでプロジェクト作成【OpenCV 3.0/3.1】 (1/3)

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

[@dandelion1124,著]
「OpenCV入門【3.0対応】」のインデックス

連載目次

ご注意:本記事は、@IT/Deep Insider編集部(デジタルアドバンテージ社)が「www.buildinsider.net」というサイトから、内容を改変することなく、そのまま「@IT」へと転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。

1. OpenCVを使ったアプリケーションのプロジェクト作成方法

1.1 はじめに

 前回、OpenCV 3.0/3.1の環境構築について解説を行いました。今回はOpenCVを使ったアプリケーションのプロジェクト作成方法について解説します。また、以降の説明は、前回の記事のいずれかの方法でOpenCV 3.0/3.1の環境構築が終わっているものとして解説を行います。

1.2 プロジェクト作成方法

 OpenCVを使ったアプリケーション開発を「Windows環境」かつ「Visual Studio」で行うための主なプロジェクト作成方法は以下の3つです。

 また、プロジェクト作成方法によって、インクルードパスやライブラリパスの設定を開発者が明示的に行う必要があるかが変わります。以下の表に作成方法ごとの設定についてまとめます。

プロジェクト作成方法 インクルードパス、ライブラリパスの設定
Visual Studioによる新規プロジェクト作成 手動
CMakeによるプロジェクト作成 自動
NuGetを使ったパッケージインストール 自動
作成方法ごとの設定

 以降は、各環境構築方法の詳細について述べていきます。また、筆者が確認した環境は以下の通りです。

項目 内容
OpenCVバージョン OpenCV 3.1
Visual Studio Visual Studio 2013 Update5
ビルド構成 x64 Release
OS Windows 10 Pro(64bit)
筆者が確認した環境
編集部注:Visual Studio 2015でも試し、本稿の手順がほぼそのまま適用できることを確認しています。違いとして、Visual Studio 2015では2.2の手順は不要です。それ以外の違いは、適宜、説明の中で注記を加えます。


2. Visual Studioによる新規プロジェクト作成

2.1 新規プロジェクト作成

 以下の手順で作成します。

図1 メニューバーの[ファイル]−[新規作成]−[プロジェクト]を選択して、新規プロジェクトを作成します 図1 メニューバーの[ファイル]−[新規作成]−[プロジェクト]を選択して、新規プロジェクトを作成します

図2 「Win32コンソールアプリケーション」テンプレートを選択して、新規プロジェクトを作成します 図2 「Win32コンソールアプリケーション」テンプレートを選択して、新規プロジェクトを作成します

図3 [アプリケーションの設定]を選択し、[空のプロジェクト]にチェックを入れて、[完了]ボタンを押します 図3 [アプリケーションの設定]を選択し、[空のプロジェクト]にチェックを入れて、[完了]ボタンを押します

2.2 新規プロジェクト作成(64bitアプリケーションの場合)

 「2.1 新規プロジェクト作成」では32bitアプリケーション用のプロジェクトが生成されます。

 64bitアプリケーションを作成する場合には、さらに以降の手順を踏む必要があります。

図4 [ビルド]−[構成マネージャー]を選択します 図4 [ビルド]−[構成マネージャー]を選択します

図5 [構成マネージャー]ダイアログの[プラットフォーム]から「<新規作成...>」を選択します 図5 [構成マネージャー]ダイアログの[プラットフォーム]から「<新規作成...>」を選択します

図6 [新しいプロジェクト プラットフォーム]ダイアログで[新しいプラットフォーム]を「x64」、[設定のコピー元]を「Win32」にして、[OK]ボタンを押します 図6 [新しいプロジェクト プラットフォーム]ダイアログで[新しいプラットフォーム]を「x64」、[設定のコピー元]を「Win32」にして、[OK]ボタンを押します

2.3 インクルードパス設定

 プロジェクトからOpenCVのヘッダーを参照するためには、OpenCVヘッダー格納パスをインクルードパスとして設定する必要があります。以下がその設定手順です。

図7 メニューバーから[プロジェクト]−[プロパティ]を選択します 図7 メニューバーから[プロジェクト]−[プロパティ]を選択します

図8 ReleaseとDebugで共通の設定なので、まずは左側のツリーから[構成プロパティ]−[C/C++]−[全般]を選択した上で、[構成]を「すべての構成」にします。次に中央の[追加のインクルード ディレクトリ]にOpenCVのインクルードパスを設定し、最後に[OK]ボタンを押します 図8 ReleaseとDebugで共通の設定なので、まずは左側のツリーから[構成プロパティ]−[C/C++]−[全般]を選択した上で、[構成]を「すべての構成」にします。次に中央の[追加のインクルード ディレクトリ]にOpenCVのインクルードパスを設定し、最後に[OK]ボタンを押します
編集部注: Visual Studio 2015では、いったん仮のソースファイルなどを追加しないと[追加のインクルード ディレクトリ]が表示されないようです。

2.4 ライブラリパス設定

 プロジェクトからOpenCVのライブラリを参照するためには、OpenCVのライブラリ格納パスをライブラリパスとして設定する必要があります。設定方法は、先ほどのインクルードパス設定とほぼ同じです。

図9 メニューバーから[プロジェクト]−[プロパティ]を選択します 図9 メニューバーから[プロジェクト]−[プロパティ]を選択します

図10 ReleaseとDebugで共通の設定なので、[構成]を「すべての構成」にします。また、[構成プロパティ]−[リンカー]−[全般]−[追加のライブラリ ディレクトリ]にOpenCVのライブラリパスを設定し、[OK]ボタンを押します 図10 ReleaseとDebugで共通の設定なので、[構成]を「すべての構成」にします。また、[構成プロパティ]−[リンカー]−[全般]−[追加のライブラリ ディレクトリ]にOpenCVのライブラリパスを設定し、[OK]ボタンを押します
編集部注: Visual Studio 2015では、ツリーから[構成プロパティ]−[VC++ ディレクトリ]を選択して、[ライブラリ ディレクトリ]に「C:\dev\opencv-3.1.0 \build\install\x64\vc14\lib」のようなパスを書き加える。

2.5 ライブラリのリンク設定

 OpenCVの関数を用いるには、その関数が含まれるOpenCVモジュールのライブラリをリンクする必要があります。ここではライブラリのリンク方法について説明します。

2.5.1 サンプルプログラムで用いるライブラリ

 今回のサンプルプログラムで用いるモジュール(core、highgui)の概要は以下の通りです(なお、CMakeでインストールした場合と公式パッケージでインストールした場合で、モジュール名が異なっています。まずは「CMakeの場合」を説明します)。

モジュール名 概要
core 画像・行列データ構造の提供、配列操作、基本図形描画、XMLおよびYAML入出力、コマンドラインパーサー、ユーティリティ機能など
highgui GUI機能(ウィンドウ表示、キーボード入力/マウス操作受け付けなど)
モジュール(core、highgui)の概要

 また、OpenCV 3.1におけるこれらのモジュールのライブラリ名をまとめたものが以下の表です。Release版とDebug版でファイル名が異なる点にご注意ください。具体的には、Debug版はファイル名に“d”が付与されています。

モジュール名 ライブラリ名(Release版) ライブラリ名(Debug版)
core opencv_core310.lib opencv_core310d.lib
highgui opencv_highgui310.lib opencv_highgui310d.lib
各モジュールのライブラリ名

 一方で、OpenCV 3.1「公式パッケージ」に同梱されているOpenCVライブラリは、worldモジュールとして1つにまとめられているため、公式パッケージを用いる場合はworldモジュールのライブラリをリンクする必要があります。OpenCV 3.1(公式パッケージ)におけるライブラリ名をまとめたものが以下の表です。

モジュール名 ライブラリ名(Release版) ライブラリ名(Debug版)
world opencv_world310.lib opencv_world310d.lib
各モジュールのライブラリ名(公式パッケージ)

 このようにプロジェクトのReleaseビルド、Debugビルドそれぞれでリンクするライブラリが異なるため、構成ごとに設定方法を説明します(2.5.2でReleaseビルド用の設定、2.5.3でDebugビルド用の設定について説明します)。

2.5.2 ライブラリのリンク設定(Releaseビルド)

 ここでも、先ほどと同じプロジェクトプロパティのダイアログで以下のように設定します

図11 [構成プロパティ]−[リンカー]−[入力]−[追加の依存ファイル]の[▼]ボタンを押し、「<編集...>]を選択します 図11 [構成プロパティ]−[リンカー]−[入力]−[追加の依存ファイル]の[▼]ボタンを押し、「<編集...>]を選択します

図12 [追加の依存ファイル]ダイアログで、追加したいライブラリ名(この例では「opencv_core310.lib」と「opencv_highgui310.lib」)を入力して、[OK]ボタンを押します 図12 [追加の依存ファイル]ダイアログで、追加したいライブラリ名(この例では「opencv_core310.lib」と「opencv_highgui310.lib」=CMakeでインストールした場合。OpenCV公式パッケージを用いる場合は、「opencv_world310.lib」)を入力して、[OK]ボタンを押します

2.5.3 ライブラリのリンク設定(Debugビルド)

図13 [構成プロパティ]−[リンカー]−[入力]−[追加の依存ファイル]の[▼]ボタンを押し、「<編集...>」を選択します 図13 [構成プロパティ]−[リンカー]−[入力]−[追加の依存ファイル]の[▼]ボタンを押し、「<編集...>」を選択します

図14 [追加の依存ファイル]ダイアログで、追加したいライブラリ名(この例では「opencv_core310d.lib」と「opencv_highgui310d.lib」)を入力して、[OK]ボタンを押します 図14 [追加の依存ファイル]ダイアログで、追加したいライブラリ名(この例では「opencv_core310d.lib」と「opencv_highgui310d.lib」=CMakeでインストールした場合。OpenCV公式パッケージを用いる場合は、「opencv_world310d.lib」)を入力して、[OK]ボタンを押します

2.6 プロパティシート(.propsファイル)を用いた設定方法

 プロジェクト作成ごとに「2.3 インクルードパス設定」「2.4 ライブラリパス設定」「2.5 ライブラリ設定」を手動で行うのが面倒な方は、あらかじめ作成しておいたプロパティシート(.propsファイル)をインポートすることで、これらの設定を容易に行うことができます。

2.6.1 プロパティシートの入手

 筆者がGitHub上にOpenCVを使うためのプロパティシートを公開していますので、皆さんの開発環境に応じて必要なプロパティシートを取得してください。プロパティシート取得後、このプロパティシートを適当な場所に格納します。以下の例では、先ほど作成したプロジェクトの.vcxprojファイルがあるディレクトリ内にプロパティシートを格納しています。

2.6.2 プロパティシートのインポート

 プロジェクトに対してプロパティシートをインポートする方法について説明します。以下の例では、「2.6.1 プロパティシートの入手」で入手したVisual Studio 2010/2012/2013/2015用のプロパティシート(opencv310.props)をインポートしています。

図15 [プロパティ マネージャー]ウィンドウを開いた後、プロジェクトを右クリックして、[既存のプロパティシートの追加]を選択します

図15 [プロパティ マネージャー]ウィンドウを開いた後、プロジェクトを右クリックして、[既存のプロパティシートの追加]を選択します
(1)で[プロパティ マネージャー]タブがない場合は、メニューバーの[表示]−[その他のウィンドウ]−[プロパティ マネージャー]を実行してください。


図16 あらかじめ用意したプロパティシート(この例では「opencv310.props」)を選択して、[開く]ボタンを押します 図16 あらかじめ用意したプロパティシート(この例では「opencv310.props」)を選択して、[開く]ボタンを押します

2.7 ソースファイルの追加

 プロジェクトに対してソースファイルを追加します。

図17 [ソリューション エクスプローラー]で[ソース ファイル]グループを右クリックして、[追加]−[新しい項目]を選択します 図17 [ソリューション エクスプローラー]で[ソース ファイル]グループを右クリックして、[追加]−[新しい項目]を選択します

図18 [新しい項目の追加]ダイアログで[Visual C++]−[C++ ファイル]テンプレートを選択し、[名前]にソースコードのファイル名(この例では「main.cpp」)を入力してから、[追加]ボタンを押します 図18 [新しい項目の追加]ダイアログで[Visual C++]−[C++ ファイル]テンプレートを選択し、[名前]にソースコードのファイル名(この例では「main.cpp」)を入力してから、[追加]ボタンを押します

 ここでは「5.1 サンプルコード」にあるmain.cppファイルを用いて動作確認を行います。

 ビルド、実行して「5.2 実行結果」にあるような結果が得られれば正しくプロジェクトが作成できています。

       1|2|3 次のページへ

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。