Search code examples
c++opencvcomputer-visionsift

OpenCV: ‘SiftDescriptorExtractor’ was not declared in this scope


I am new to OpenCV in general and have been trying out a number of examples over the past few days. I've successfully gotten Harris corner detections to work on some test images. My next test was to see if I could match two images based on the harris detections using SIFT.

Here is how I found harris corners:

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

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

This works well. With my next goal of matching the features between img1 and img2, I try to use SIFT. However, when I try to declare an extractor for SIFT:

SiftDescriptorExtractor extractor;

I get the following error:

error: ‘SiftDescriptorExtractor’ was not declared in this scope SiftDescriptorExtractor extractor;

What am I doing wrong?

Thanks in advance.


Solution

  • Make sure you have #include <features2d.hpp>. In some versions of OpenCV, Sift are in <opencv2/nonfree/features2d.hpp>.