OpenCVをVisual C++で簡単に使う
Visual Studio 2012以外の人は,バージョンごとに手順をまとめた以下の記事を参照.
OpenCVをVisual Studioで動かす(NuGetによりインストールする方法) - whoopsidaisies's diary
何のための記事なの
Visual C++でOpenCVを簡単に使う方法.OpenCVにつきものの面倒くさいインストールやら設定やらをしたくない人向け.Visual Studio 2012が必要.細かいことはいいから早く使いたいという方はこちらから.
Visual C++でのOpenCVの使用方法は「OpenCV を Visual Studio で使う方法」等いろんなところで詳しく解説されているが,手順が多くとにかく面倒.せっかく動作しても,作業PCを変えたらまたインストールしなくちゃいけないし,新しいプロジェクト作ったら設定しなおさなくちゃいけない.
NuGetのOpenCVパッケージを使えば,こういう面倒な設定をほとんどやらなくてすみますよ,という記事.
なぜVisual C++か
以前「C#でOpenCVを動かす~NuGetでOpenCV.Netをインストール」という記事で,OpenCVのC#ラッパを簡単に使う方法を書いたが,今回はなぜC++にしたのか.もともとはC言語なインターフェースのOpenCVを使うのが面倒だったからC#にしていたのだが
- C#ラッパはすべての関数を実装しているわけではないので,色々やろうと思うとやはりOpenCVそのものを使いたくなる.
- OpenCV 2.0以降C++のクラスによるインターフェースが提供されているので,それなりに使いやすい.
といったところがC++にした理由.
Visual Studioなのは,NuGetにOpenCVパッケージがあったため.NuGetはVisual Studioについているパッケージ管理システム.様々なライブラリをVisual Studioの操作だけで使えるようにできる.非常に便利.
使い方は「NuGet でプロジェクト ライブラリを管理する」とかを参考に.
手順
NuGetパッケージの管理から「OpenCV」をインストール
ソリューションエクスプローラーからプロジェクトを右クリックして「NuGet パッケージの管理...」を選択.オンラインのパッケージから「OpenCV」を検索してインストール.そうすると,ソリューションフォルダの下に「packages」というフォルダができていて,その中にOpenCVのライブラリやりヘッダやらVisual Studioの設定用ファイルやらができて自動で読み込んでくれる.
動作確認
以上でOpenCVが使えるようになっているので,動作確認のためにSIFTによる特徴検出プログラムを作った.以下がソースコード.
#include <opencv2/nonfree/nonfree.hpp> #include <opencv/highgui.h> void main() { // 画像読み込み const cv::Mat input = cv::imread("C:\\Users\\Public\\Pictures\\Sample Pictures\\Penguins2.jpg", 1); // SIFTによる特徴検出 cv::SiftFeatureDetector detector; std::vector<cv::KeyPoint> keypoints; detector.detect(input, keypoints); // キーポイントの書き込み cv::Mat output; cv::drawKeypoints(input, keypoints, output); // キーポイントを書き込んだ画像の表示 cv::imshow("SIFT", output); cv::waitKey(); }
プロジェクトの設定によっては「error C4996」が出てコンパイルが通らない場合がある.そうなった場合は
#define _CRT_SECURE_NO_DEPRECATE
するなり,プロジェクトの設定いじるなりして「_CRT_SECURE_NO_DEPRECATE」マクロを定義すれば通るはず.参考ページ.
うまくいけば,下の画像みたいにキーポイントが書き込まれた画像が表示されるはず.
注意
NuGetのOpenCVパッケージは現状では,プラットフォームツールセットがVisual Studio 2012 (v110)にしか対応していないっぽい.そのためこの記事を書いている時点では,上記方法はVisual Studio 2012でしか使えない.(もしかしたらVisual Studio 2010でも使えるかもしれないけど,ひと手間必要そう)
追記:Visual Studio 2012以外の人は以下の記事を参照
OpenCVをVisual Studioで動かす(NuGetによりインストールする方法) - whoopsidaisies's diary