检测代码:
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...\n"); 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\n", 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 }
结果: