当前位置 : 首页 » 文章分类 :  科研  »  OpenCV2.4.4实现Harris角点检测

OpenCV2.4.4实现Harris角点检测

代码如下:

  1. #include "opencv2/highgui/highgui.hpp"
  2. #include "opencv2/imgproc/imgproc.hpp"
  3. #include <iostream>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. using namespace cv;
  7. using namespace std;
  8. //全局变量
  9. Mat src, src_gray;//源图和灰度图
  10. int thresh = 200;//默认阈值
  11. int max_thresh = 255;//滑块条最大值
  12. void cornerHarris_demo( int, void* )
  13. {
  14. Mat dst, dst_norm, dst_norm_scaled;
  15. dst = Mat::zeros( src.size(), CV_32FC1 );
  16. //参数
  17. int blockSize = 2;
  18. int apertureSize = 3;
  19. double k = 0.04;
  20. //Harris角点检测
  21. cornerHarris( src_gray, dst, blockSize, apertureSize, k, BORDER_DEFAULT );
  22. //像素归一化到[0,255]
  23. normalize( dst, dst_norm, 0, 255, NORM_MINMAX, CV_32FC1, Mat() );
  24. convertScaleAbs( dst_norm, dst_norm_scaled );//去绝对值后变换为8位无符号类型
  25. Mat src_copy = src.clone();
  26. //在角点上画圈
  27. for( int j = 0; j < dst_norm.rows ; j++ )
  28. {
  29. for( int i = 0; i < dst_norm.cols; i++ )
  30. {
  31. if( (int) dst_norm.at<float>(j,i) > thresh )
  32. {
  33. circle(dst_norm_scaled,Point(i,j),3,Scalar(0));
  34. circle(src_copy,Point(i,j),3,Scalar(0,255,0));
  35. }
  36. }
  37. }
  38. /// Showing the result
  39. namedWindow( "Corners", CV_WINDOW_AUTOSIZE );
  40. imshow( "Corners", dst_norm_scaled );
  41. imshow( "Src", src_copy );
  42. }
  43. int main()
  44. {
  45. //加载源图像并转换为灰度图
  46. src = imread("horse.jpg");
  47. cvtColor( src, src_gray, CV_BGR2GRAY );
  48. //显示源图
  49. namedWindow( "Src", CV_WINDOW_AUTOSIZE );
  50. imshow( "Src", src );
  51. //创建滑块条,并指定回调函数为cornerHarris_demo(),每次滑块位置改变时都会调用此函数
  52. createTrackbar( "阈值:", "Src", &thresh, max_thresh, cornerHarris_demo );
  53. //调用函数,计算角点
  54. cornerHarris_demo( 0, 0 );
  55. waitKey(0);
  56. return(0);
  57. }

效果图:

上一篇 OpenCV2.4.4中调用SIFT特征检测器进行图像匹配

下一篇 OpenCV2.4.4实现Shi-Tomasi角点检测(goodFeaturesToTrack)

阅读
评论
322
阅读预计1分钟
创建日期 2013-05-28
修改日期 2017-07-10
类别

页面信息

location:
protocol: http:
host: devgou.com
hostname: devgou.com
origin: http://devgou.com
pathname: /article/OpenCV-Harris-Corner-Detect/
href: http://devgou.com/article/OpenCV-Harris-Corner-Detect/
document:
referrer:
navigator:
platform: Linux x86_64
userAgent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)

评论