OpenCVを使ったアプリケーションのプロジェクト作成方法として、「Visual Studio」「CMake」「NuGet」の3つの方法を解説する。
ご注意:本記事は、@IT/Deep Insider編集部(デジタルアドバンテージ社)が「www.buildinsider.net」というサイトから、内容を改変することなく、そのまま「@IT」へと転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。
前回、OpenCV 3.0/3.1の環境構築について解説を行いました。今回はOpenCVを使ったアプリケーションのプロジェクト作成方法について解説します。また、以降の説明は、前回の記事のいずれかの方法でOpenCV 3.0/3.1の環境構築が終わっているものとして解説を行います。
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) |
以下の手順で作成します。
「2.1 新規プロジェクト作成」では32bitアプリケーション用のプロジェクトが生成されます。
64bitアプリケーションを作成する場合には、さらに以降の手順を踏む必要があります。
プロジェクトからOpenCVのヘッダーを参照するためには、OpenCVヘッダー格納パスをインクルードパスとして設定する必要があります。以下がその設定手順です。
プロジェクトからOpenCVのライブラリを参照するためには、OpenCVのライブラリ格納パスをライブラリパスとして設定する必要があります。設定方法は、先ほどのインクルードパス設定とほぼ同じです。
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ビルド)
ここでも、先ほどと同じプロジェクトプロパティのダイアログで以下のように設定します
2.5.3 ライブラリのリンク設定(Debugビルド)
プロジェクト作成ごとに「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)で[プロパティ マネージャー]タブがない場合は、メニューバーの[表示]−[その他のウィンドウ]−[プロパティ マネージャー]を実行してください。
プロジェクトに対してソースファイルを追加します。
ここでは「5.1 サンプルコード」にあるmain.cppファイルを用いて動作確認を行います。
ビルド、実行して「5.2 実行結果」にあるような結果が得られれば正しくプロジェクトが作成できています。
Copyright© Digital Advantage Corp. All Rights Reserved.