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 件のコメント:
コメントを投稿