2014年11月18日火曜日

OpenCV 3.0 beta で SIFTを動かした

OpenCV 3.0 では、SIFTはmainから、contribに移され、APIも見直しされている。

アルファ版の記事はここ

contribは開発中なので今後も変更される可能性がある。すでにSIFTも修正されアルファ版のソースではエラーとなってしまった。

3.0 の最新のSIFTの説明は、ここで見れるが、残念ながらalphaの内容と変わらない


SIFTのサンプルを探してみたが、SIFT関連のサンプルが準備されていない。前回と同様にソースを見てみたがうまくいかなかった。
変わりにSURFのサンプルがあったので、それを参考にソースの修正を行うことで動作した。

ベータ版でのSIFTのサンプルコードは、以下のようになる

// main用
#include <opencv2/opencv.hpp>
//
// contribは個別に指定
//
#include <opencv2/xfeatures2d.hpp>

int main( int argc, char** argv )
{
 cv::Mat image, gimage;
 std::string fname = "./opencv/samples/cpp/baboon.jpg";

 cv::Ptr<cv::Feature2D> detector = cv::xfeatures2d::SIFT::create();
 std::vector<cv::KeyPoint> keypoints;

 image = cv::imread(fname);

 cv::cvtColor(image, gimage, cv::COLOR_BGR2GRAY);

 detector->detect(gimage, keypoints);

 cv::drawKeypoints(image, keypoints, image);

 cv::imshow( "sift image", image );

 cv::waitKey(0);

 return 0;
}

以上

0 件のコメント:

コメントを投稿