sift_test.cpp:15:5: error: ‘SiftFeatureDetector’ was not declared in this scope
SiftFeatureDetector siftDetector;//SIFT=SiftFeatureDetector=SiftDescriptorE
^
/home/ning/桌面/周报/第三次周报/sift_test.cpp:15:5: note: suggested alternative:
In file included from /home/ning/桌面/周报/第三次周报/sift_test.cpp:2:0:
/usr/local/include/opencv2/xfeatures2d/nonfree.hpp:84:14: note: ‘cv::xfeatures2d::SiftFeatureDetector’
typedef SIFT SiftFeatureDetector;
^
/home/ning/桌面/周报/第三次周报/sift_test.cpp:19:5: error: ‘siftDetector’ was not declared in this scope
siftDetector.detect(srcImg1, keyPoints1);
^
CMakeFiles/sift_test.dir/build.make:62: recipe for target 'CMakeFiles/sift_test.dir/sift_test.cpp.o' failed
make[2]: *** [CMakeFiles/sift_test.dir/sift_test.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/sift_test.dir/all' failed
make[1]: *** [CMakeFiles/sift_test.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
解决方法
修改代码
//利用sift提取特征点
cv::Ptr<cv::xfeatures2d::SIFT> sift = cv::xfeatures2d::SIFT::create();
//特征点
std::vector<cv::KeyPoint> keyPoint1, keyPoint2;
//单独提取特征点
sift->detect(img1, keyPoint1);
sift->detect(img2, keyPoint2);
//画特征点
cv::Mat keyPointImage1;
cv::Mat keyPointImage2;
drawKeypoints(img1, keyPoint1, keyPointImage1, cv::Scalar::all(-1), cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
drawKeypoints(img2, keyPoint2, keyPointImage2, cv::Scalar::all(-1), cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);