Visual Studio Express 2013 for Windows Desktopの開発環境でNuGetを使ってOpenCVを導入してみました。その方法についてです。
まずは、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
Visual Studio Express 2012 for Windows Desktop
ここから実際の手順です。毎回同じことを書いていますが、以下は、唯一の正しい手順ということではなく一例です。またスクリーンショットは、Visual Studio Express 2013 for Windows Desktopです。
新規プロジェクトの作成
ファイル → 新しいプロジェクト で新規プロジェクトを作成します。左のテンプレートで、Visual C++ 、Win32を選択します。任意のプロジェクト名でプロジェクトを作成します。
ここで完了ボタンで完了です。これで基本のプロジェクトが出来ました。
ここからNuGetを使います。
まず、以下の画像のように、Visual Studio Express 2013 for Windows DesktopのツールメニューからNuGetの管理画面を起動します。
検索エリアからOpenCVで検索をして(以下の画像の①)見つかったOpenCVを選択して(以下の画像の②)インストールをします。
以下の確認メニューが表示されてOKボタンでインストールが始まります。
以上で、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); }
これで問題なくビルドが出来て以下の結果が表示されました。
今回のNuGetを利用する方法の方が簡単だと思いましたがいかがでしょうか。ただ、OpenCV本体にはサンプルやドキュメント等も含まれているので、そちらが必要な場合は本体をダウンロードすればいいかと思います。
OpenCV自体については今後書くことが出来れば書きたいと思います。