OpenCV 3では、一貫した機能検出APIが導入されました。
つまり、すべてのフィーチャディテクタは、静的なcreate()メソッドを実装しています。このメソッドは、cv :: Ptrをそれぞれのディテクタに返します。
Default descriptors
:あなたは、最新のドキュメントであるOpenCVのの検出器のそれぞれを使用することができます。このサンプルに続き
#include <iostream>
#include <vector>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/features2d.hpp>
#include <opencv2/xfeatures2d.hpp>
int main(int argc, char *argv[])
{
if(argc > 1) {
cv::Mat img = cv::imread(argv[1], cv::ImreadModes::IMREAD_GRAYSCALE);
if(!img.empty()) {
cv::Ptr<cv::xfeatures2d::SiftFeatureDetector> siftDetector = cv::xfeatures2d::SiftFeatureDetector::create();
cv::Ptr<cv::BRISK> briskDetector = cv::BRISK::create();
std::vector<cv::KeyPoint> siftKeypoints;
std::vector<cv::KeyPoint> briskKeypoints;
siftDetector->detect(img, siftKeypoints);
briskDetector->detect(img, briskKeypoints);
std::cout << "Detected " << siftKeypoints.size() << " SIFT keypoints." << std::endl;
std::cout << "Detected " << briskKeypoints.size() << " BRISK keypoints." << std::endl;
return 0;
} else {
std::cout << "Unable to load image, aborting." << std::endl;
return -1;
}
}
std::cout << "A path to an (image) file is missing." << std::endl;
return -1;
}
:ここ
は説明した動作を示して簡単な例です
Non-free descriptors
Experimental descriptors
出典
2017-03-24 22:50:13
s1h
OpenCVで提供されているサンプルを見ましたか? http://stackoverflow.com/a/14986422/6331998 – m3h0w