我想根据Features2D + Homography to find a known object
提取FAST功能 SurfFeatureDetector detector( minHessian );
std::vector<KeyPoint> keypoints_object, keypoints_scene;
detector.detect( img_object, keypoints_object );
detector.detect( img_scene, keypoints_scene );
//-- Step 2: Calculate descriptors (feature vectors)
SurfDescriptorExtractor extractor;
SurfFeatureDetector和FastFeatureDetector类继承自Detector,可以进行交换。但我找不到SurfDescriptorExtractor的匹配类,我希望找到像FastDescriptorExtractor这样的类,但这样的类不可用。似乎很奇怪的是,如果我只将Detector更改为FastFeatureDetector,那么示例似乎正常工作。
我的问题是:对于快速功能,上述序列应该如何?
答案 0 :(得分:8)
据我所知,OpenCV中没有FAST功能提取器。 与可用于特征检测和特征向量计算的SURF不同,FAST主要用于检测特征点。获取要素点后,需要使用其他一些特征提取器生成要素向量并进行匹配。 或者,如果您关注速度,在OpenCV 2.3中,会引入ORB功能,它实际上使用多尺度FAST(加上一些Harris角点测量)作为其检测器。用法类似于SURF:
OrbFeatureDetector detector(n_features);
OrbDescriptorExtractor extractor(patch_size);
您需要将示例中的匹配器更改为基于汉明距离的匹配器。希望这会有所帮助。