第4回 初めてのOpenCV開発 ― Visual Studio/CMake/NuGetでプロジェクト作成【OpenCV 3.0/3.1】:OpenCV入門【3.0対応】(1/3 ページ)
OpenCVを使ったアプリケーションのプロジェクト作成方法として、「Visual Studio」「CMake」「NuGet」の3つの方法を解説する。
ご注意:本記事は、@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 新規プロジェクト作成
以下の手順で作成します。
2.2 新規プロジェクト作成(64bitアプリケーションの場合)
「2.1 新規プロジェクト作成」では32bitアプリケーション用のプロジェクトが生成されます。
64bitアプリケーションを作成する場合には、さらに以降の手順を踏む必要があります。
2.3 インクルードパス設定
プロジェクトからOpenCVのヘッダーを参照するためには、OpenCVヘッダー格納パスをインクルードパスとして設定する必要があります。以下がその設定手順です。
図8 ReleaseとDebugで共通の設定なので、まずは左側のツリーから[構成プロパティ]−[C/C++]−[全般]を選択した上で、[構成]を「すべての構成」にします。次に中央の[追加のインクルード ディレクトリ]にOpenCVのインクルードパスを設定し、最後に[OK]ボタンを押します
※編集部注: Visual Studio 2015では、いったん仮のソースファイルなどを追加しないと[追加のインクルード ディレクトリ]が表示されないようです。
2.4 ライブラリパス設定
プロジェクトからOpenCVのライブラリを参照するためには、OpenCVのライブラリ格納パスをライブラリパスとして設定する必要があります。設定方法は、先ほどのインクルードパス設定とほぼ同じです。
図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ビルド)
ここでも、先ほどと同じプロジェクトプロパティのダイアログで以下のように設定します
図12 [追加の依存ファイル]ダイアログで、追加したいライブラリ名(この例では「opencv_core310.lib」と「opencv_highgui310.lib」=CMakeでインストールした場合。OpenCV公式パッケージを用いる場合は、「opencv_world310.lib」)を入力して、[OK]ボタンを押します
2.5.3 ライブラリのリンク設定(Debugビルド)
図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 [プロパティ マネージャー]ウィンドウを開いた後、プロジェクトを右クリックして、[既存のプロパティシートの追加]を選択します
※(1)で[プロパティ マネージャー]タブがない場合は、メニューバーの[表示]−[その他のウィンドウ]−[プロパティ マネージャー]を実行してください。
2.7 ソースファイルの追加
プロジェクトに対してソースファイルを追加します。
図18 [新しい項目の追加]ダイアログで[Visual C++]−[C++ ファイル]テンプレートを選択し、[名前]にソースコードのファイル名(この例では「main.cpp」)を入力してから、[追加]ボタンを押します
ここでは「5.1 サンプルコード」にあるmain.cppファイルを用いて動作確認を行います。
ビルド、実行して「5.2 実行結果」にあるような結果が得られれば正しくプロジェクトが作成できています。
Copyright© Digital Advantage Corp. All Rights Reserved.