OpenCV 角点检测

  1. #include <stdio.h>  
  2. #include "cv.h"  
  3. #include "highgui.h"  
  4.   
  5. #define MAX_CORNERS 100  
  6.   
  7. int main(void)   
  8. {   
  9. int cornersCount=MAX_CORNERS;//得到的角点数目  
  10. CvPoint2D32f corners[MAX_CORNERS];//输出角点集合  
  11. IplImage *srcImage = 0,*grayImage = 0,*corners1 = 0,*corners2 = 0;   
  12. int i;   
  13. CvScalar color = CV_RGB(255,0,0);   
  14. char *filename = "pic3.png";   
  15. cvNamedWindow("image",1);   
  16.   
  17. //Load the image to be processed  
  18. srcImage = cvLoadImage(filename,1);   
  19. grayImage = cvCreateImage(cvGetSize(srcImage),IPL_DEPTH_8U,1);   
  20.   
  21. //copy the source image to copy image after converting the format  
  22. //复制并转为灰度图像   
  23. cvCvtColor(srcImage,grayImage,CV_BGR2GRAY);   
  24.   
  25. //create empty images os same size as the copied images  
  26. //两幅临时32位浮点图像,cvGoodFeaturesToTrack会用到  
  27. corners1 = cvCreateImage(cvGetSize(srcImage),IPL_DEPTH_32F,1);   
  28. corners2 = cvCreateImage(cvGetSize(srcImage),IPL_DEPTH_32F,1);   
  29.   
  30. cvGoodFeaturesToTrack(grayImage,corners1,   
  31. corners2,corners,   
  32. &cornersCount,0.05,   
  33. 30,//角点的最小距离是30  
  34. 0,//整个图像   
  35. 3,0,0.4);   
  36. //默认值   
  37. printf("num corners found: %d/n",cornersCount);   
  38.   
  39. //开始画出每个点  
  40. if (cornersCount>0)   
  41. {   
  42. for (i=0;i<cornersCount;i++)   
  43. {   
  44. cvCircle(srcImage,cvPoint((int)(corners[i].x),(int)(corners[i].y)),   
  45. 2,color,2,CV_AA,0);   
  46. }   
  47. }   
  48.   
  49. cvShowImage("image",srcImage);   
  50. cvSaveImage("imagedst.png",srcImage);   
  51.   
  52. cvReleaseImage(&srcImage);   
  53. cvReleaseImage(&grayImage);   
  54. cvReleaseImage(&corners1);   
  55. cvReleaseImage(&corners2);   
  56.   
  57. cvWaitKey(0);   
  58. return 0;   
  59. }   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值