SURF特征点检测的实现如下所示:

 

SURF函数的用法:

 

 

一般create()用minHessian即可

 

 

 

 

 

 

 

 

 

 

 代码:

 

  1. 1 #include <opencv2/opencv.hpp>
  2. 2 #include <opencv2/xfeatures2d.hpp>
  3. 3 #include <iostream>
  4. 4
  5. 5 using namespace cv;
  6. 6 using namespace cv::xfeatures2d;
  7. 7 using namespace std;
  8. 8
  9. 9 int main(int argc, char** argv) {
  10. 10 Mat src = imread("L:/4.jpg", IMREAD_GRAYSCALE);
  11. 11 //将读取的图片,读成灰度图片
  12. 12 if (src.empty()) {
  13. 13 printf("could not load image...\n");
  14. 14 return -1;
  15. 15 }
  16. 16 namedWindow("input image", CV_WINDOW_AUTOSIZE);
  17. 17 imshow("input image", src);
  18. 18
  19. 19 // SURF特征检测
  20. 20 int minHessian = 100;
  21. 21 Ptr<SURF> detector = SURF::create(minHessian); //定义一个SURF类型的指针detector,创建最小海深矩阵
  22. 22 vector<KeyPoint> keypoints; //定义KeyPoint类型变量
  23. 23 detector->detect(src, keypoints, Mat()); //detect函数开始检测
  24. 24
  25. 25 // 绘制关键点
  26. 26 Mat keypoint_img;
  27. 27 drawKeypoints(src, keypoints, keypoint_img, Scalar::all(-1), DrawMatchesFlags::DEFAULT);
  28. 28 //绘制关键点的函数:1.输入图像 2.检测出的关键点 3.输出图像 4.颜色自动 5.默认为小圆圈
  29. 29 imshow("KeyPoints Image", keypoint_img);
  30. 30
  31. 31 waitKey(0);
  32. 32 return 0;
  33. 33 }

 

结果显示:

 

版权声明:本文为Jack-Elvis原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Jack-Elvis/p/11683893.html