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

システム開発エンジニアの西田五郎が運営しております。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, 使ってみた

執筆者:

関連記事

OpenCVでのORBによる特徴点抽出とマッチング(その2)GUIの利用

OpenCVでのORBアルゴリズムによる特徴点抽出とマッチングの処理についての2回目です。前回はVisual Studio Community 2013のVisual C++コンソールアプリでORBに …

OpenCVで背景差分とテスト的な動体検知

OpenCVで背景差分を試してみました。あとテスト的な動体検知も試してみました。背景差分とはあらかじめ取得した画像を背景画像として、観測時点の画像とその背景画像との差分を取ることによりその差分を前景領 …

no image

Tiva C EK-TM4C123GXL(その8) タイマと割り込み

Tiva C EK-TM4C123GXLを使ってみるの8回目です。前回は、ボード上のスイッチを使いましたが、今回はタイマと割り込みです。 以下のメーカのサイトを見ながらプログラムを作っていきます。 G …

3Dプリンターを使ってみた(その1)今までやったこと

3Dプリンターとは3Dデータを元にして樹脂類や石膏等の材質から3Dの形状を出力する機械です。代表的な造形方法に熱溶解積層法というのがあり、熱に溶ける樹脂を層にして重ねていく方法で立体を作り上げていきま …

no image

Tiva C EK-TM4C123GXL(その6) Initialization と GPIO

Tiva C EK-TM4C123GXLを使ってみるの6回目です。やっと今回から本題のプログラミングです。 前回まででEWARMでTiva C用の新規プロジェクトが作成出来たとしてそのプロジェクトでプ …