株式会社インデペンデンスシステムズ横浜

システム開発エンジニアの西田五郎が運営しております。Raspberry Pi や Arduino その他新規開発案件のご依頼をお待ちしております。

OpenCV 使ってみた

NuGetでOpenCVを導入する

投稿日:2014年5月4日 更新日:

Visual Studio Express 2013 for Windows Desktopの開発環境でNuGetを使ってOpenCVを導入してみました。その方法についてです。

0007

まずは、OpenCV(Open Source Computer Vision Library)についてです。結構歴史があると思いますのでご存じの方も多いと思いますが、元々はIntelが開発したオープンソースのコンピュータビジョン関連のライブラリです。幅広いプラットフォーム(OS)に対応しています。私の場合は顔認識の処理がまず思い浮かびます。ここのサンプル画像は、以下の2値化処理の実行例です。
画像処理 OpenCV-CookBook 画像を2値化する

次に、NuGetですが、これは、Visual Studio プロジェクトのライブラリの追加、更新、および削除を容易にする Visual Studio の拡張機能です。Visual Stduio上から利用出来るので、開発中のプロジェクトのライブラリ管理が容易に行えるということです。

つまり、ここで試したい事は、従来のようにOpenCVをインストールしてプロジェクトごとにOpenCVの利用環境を手動で整えていく方法ではなく、NuGetで簡単にやってしまおうということです。

Visual Studioのバージョンについて
ここでは、Visual Studio Express 2013 for Windows Desktopですが、Visual Studio Express 2012 for Windows Desktopでも動作確認出来ました。ただし、Updateのバージョン、NuGetのバージョン等、細かい違いにより動作するかどうかは何とも言えませんのでご了承ください。

Visual Studioのインストール方法については、ここでは省略します。必要な場合は現在は以下からダウンロード出来ます。
Visual Studio Express 2013 ダウンロード
インストール詳細方法等は例えばですが以下等を参照して下さい。
Visual Studio Express 2013インストール – インコのWindowsSDK

参考までにですが、私の環境で、2013と2012でそれぞれヘルプメニューのバージョン情報を表示したスクリーンショットが以下です。

Visual Studio Express 2013 for Windows Desktop
0001

Visual Studio Express 2012 for Windows Desktop
0006

ここから実際の手順です。毎回同じことを書いていますが、以下は、唯一の正しい手順ということではなく一例です。またスクリーンショットは、Visual Studio Express 2013 for Windows Desktopです。

新規プロジェクトの作成
ファイル → 新しいプロジェクト で新規プロジェクトを作成します。左のテンプレートで、Visual C++ 、Win32を選択します。任意のプロジェクト名でプロジェクトを作成します。
0009

ここで完了ボタンで完了です。これで基本のプロジェクトが出来ました。
0011

ここからNuGetを使います。

まず、以下の画像のように、Visual Studio Express 2013 for Windows DesktopのツールメニューからNuGetの管理画面を起動します。
WS000010

検索エリアからOpenCVで検索をして(以下の画像の①)見つかったOpenCVを選択して(以下の画像の②)インストールをします。
0014

以下の確認メニューが表示されてOKボタンでインストールが始まります。
0016

以上で、NuGetでのOpenCVのライブラリの導入が完了です。

次に、以下から引用(一部修正、簡略化しました)したソースプログラムで動作確認します。
入出力とGUI OpenCV-CookBook
そのソースは以下です。

// OpenCV01.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

int
main(int argc, char *argv[])
{
	cv::Mat src_img = cv::imread("c:\\Penguins.jpg", 1);
	if (src_img.empty()) return -1;

	/// 画像を表示するウィンドウ
	// ウィンドウの名前,プロパティ
	// CV_WINDOW_AUTOSIZE : ウィンドウサイズを画像サイズに合わせる
	// CV_WINDOW_FREERATIO : ウィンドウのアスペクト比を固定しない
	cv::namedWindow("image1", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
	// ウィンドウ名でウィンドウを指定して,そこに画像を描画
	cv::imshow("image1", src_img);

	// キー入力を(無限に)待つ
	cv::waitKey(0);
}

これで問題なくビルドが出来て以下の結果が表示されました。

0018

今回のNuGetを利用する方法の方が簡単だと思いましたがいかがでしょうか。ただ、OpenCV本体にはサンプルやドキュメント等も含まれているので、そちらが必要な場合は本体をダウンロードすればいいかと思います。

OpenCV自体については今後書くことが出来れば書きたいと思います。

AdSense

AdSense

-OpenCV, 使ってみた

執筆者:

関連記事

AndroidでUSBシリアル通信(その4)ライブラリサンプルの内容

AndroidでUSBシリアル通信の4回目です。今回は、前回動作確認をしたライブラリサンプルの内容、つまり設定ファイルやプログラムの構成、プログラムの仕様等を見ます。 ライブライは以下です。より詳細は …

no image

Tiva C EK-TM4C123GXL(その9) UART通信

Tiva C EK-TM4C123GXLを使ってみるの9回目です。前回は、タイマと割り込みでしたが、今回は、UART通信です。 以下のメーカのサイトを見ながらプログラムを作っていきます。 Gettin …

no image

Microsoft AzureでSQL DBを使ってみる(その2)Azureでの公開

前回の続きです。Microsoft Azure(以下、Azureと表記します。)のSQLデータベース(以下 SQLDBと表記します。)を使ってみます。毎回のように書いていますが手順は一つの方法ですので …

no image

Microsoft AzureでSQL DBを使ってみる(その1)概要とASP.NETサイトの作成

以下の投稿で、Microsoft AzureでASP.NETサイトを公開してみましたが、その際にはデータベースを使っていなかったので、次の段階としてMicrosoft Azure(以下、Azureと表 …

OpenCVをWin32ベースで利用する(その5)GUIコントロールの追加

OpenCVをWin32ベースで利用するの5回目です。前回の4回目で一度終了したのですが、画面上の入出力用のコントロール、つまり、ラベル、エディット、コンボ等のコントロールがなかったので追加してみまし …