OpenCV:“SiftDescriptorExtractor”未在此范围内声明

OpenCV: ‘SiftDescriptorExtractor’ was not declared in this scope

总的来说,我是 OpenCV 的新手,过去几天一直在尝试一些例子。我已经成功地进行了 Harris 角点检测,以处理一些测试图像。我的下一个测试是看看我是否可以使用 SIFT 基于哈里斯检测来匹配两个图像。

我是这样找到哈里斯角的:

GoodFeaturesToTrackDetector harris_detector(1000, 0.01, 10, 3, true);
vector<KeyPoint> keypoints1, keypoints2; 

harris_detector.detect(img1, keypoints1);
harris_detector.detect(img2, keypoints2);

这很好用。我的下一个目标是匹配 img1 和 img2 之间的特征,我尝试使用 SIFT。但是,当我尝试为 SIFT 声明提取器时:

SiftDescriptorExtractor extractor;

我收到以下错误:

错误:“SiftDescriptorExtractor”未在此范围内声明 SiftDescriptorExtractor 提取器;

我做错了什么?

提前致谢。

确保你有 #include <features2d.hpp>。 在某些版本的 OpenCV 中,Sift 在 <opencv2/nonfree/features2d.hpp>.