SIFT特征点检测实现

 

 

 

 

 

 检测代码:

 1 #include <opencv2/opencv.hpp>
 2 #include <opencv2/xfeatures2d.hpp>
 3 #include <iostream>
 4 
 5 using namespace cv;
 6 using namespace std;
 7 using namespace cv::xfeatures2d;
 8 
 9 int main(int argc, char** argv) {
10     Mat src = imread("L:/4.jpg");
11     if (src.empty()) {
12         printf("could not load image...
");
13         return -1;
14     }
15     namedWindow("input image", CV_WINDOW_AUTOSIZE);
16     imshow("input image", src);
17 
18     int numFeatures = 400;    //检测400个特征点              
19     Ptr<SIFT> detector = SIFT::create(numFeatures);
20     vector<KeyPoint> keypoints;
21     detector->detect(src, keypoints, Mat());  //开始检测
22     printf("Total KeyPoints : %d
", keypoints.size());  //打印keypoints的数量信息
23 
24     Mat keypoint_img;
25     drawKeypoints(src, keypoints, keypoint_img, Scalar::all(-1), DrawMatchesFlags::DEFAULT);
26     //将关键点画到图上
27     namedWindow("SIFT KeyPoints", CV_WINDOW_AUTOSIZE);
28     imshow("SIFT KeyPoints", keypoint_img);
29 
30     waitKey(0);
31     return 0;
32 }

结果:

原文地址:https://www.cnblogs.com/Jack-Elvis/p/11690105.html