• Open Source Computer Vision Library

Canny边缘检测

Wikipedia,自由的百科全书

来自于仕琪的讲稿《使用OpenCV进行图像处理》中的例程

  1. /**************************************************
  2. * cvCanny:Canny边缘检测
  3. **************************************************/
  4.  
  5. /***********************************************************************
  6. * OpenCV example
  7. * By Shiqi Yu 2006
  8. ***********************************************************************/
  9.  
  10. #include "cv.h"
  11. #include "cxcore.h"
  12. #include "highgui.h"
  13.  
  14. int main( int argc, char** argv )
  15. {
  16. //声明IplImage指针
  17. IplImage* pImg = NULL;
  18. IplImage* pCannyImg = NULL;
  19.  
  20. //载入图像,强制转化为Gray
  21. if( argc == 2 &&
  22. (pImg = cvLoadImage( argv[1], 0)) != 0 )
  23. {
  24.  
  25. //为canny边缘图像申请空间
  26. pCannyImg = cvCreateImage(cvGetSize(pImg),
  27. IPL_DEPTH_8U,
  28. 1);
  29. //canny边缘检测
  30. cvCanny(pImg, pCannyImg, 50, 150, 3);
  31.  
  32. //创建窗口
  33. cvNamedWindow("src", 1);
  34. cvNamedWindow("canny",1);
  35.  
  36.  
  37. //显示图像
  38. cvShowImage( "src", pImg );
  39. cvShowImage( "canny", pCannyImg );
  40.  
  41. cvWaitKey(0); //等待按键
  42.  
  43. //销毁窗口
  44. cvDestroyWindow( "src" );
  45. cvDestroyWindow( "canny" );
  46. //释放图像
  47. cvReleaseImage( &pImg );
  48. cvReleaseImage( &pCannyImg );
  49.  
  50. return 0;
  51. }
  52.  
  53. return -1;
  54. }

Python版本

  1.  
  2. # -*- coding:utf-8 -*-
  3. ###########################################################
  4. # OpenCV example
  5. #
  6. # cvCanny:Canny边缘检测
  7. #
  8. # By ChaiShushan 2008
  9. ###########################################################
  10.  
  11. import sys
  12.  
  13. # 导入OpenCV模块
  14.  
  15. from opencv.cv import *
  16. from opencv.highgui import *
  17.  
  18. if __name__ == '__main__':
  19.  
  20. if len(sys.argv) == 2:
  21.  
  22. # 载入图像,强制转化为Gray
  23.  
  24. pImg = cvLoadImage(sys.argv[1], 0)
  25. if not pImg: sys.exit(-1)
  26.  
  27. # 为canny边缘图像申请空间
  28.  
  29. pCannyImg = cvCreateImage(cvGetSize(pImg), IPL_DEPTH_8U, 1)
  30.  
  31. # canny边缘检测
  32.  
  33. cvCanny(pImg, pCannyImg, 50, 150, 3)
  34.  
  35. # 创建窗口
  36.  
  37. cvNamedWindow("src", 1)
  38. cvNamedWindow("canny",1)
  39.  
  40. # 显示图像
  41.  
  42. cvShowImage( "src", pImg )
  43. cvShowImage( "canny", pCannyImg )
  44.  
  45. # 等待按键
  46.  
  47. cvWaitKey(0);
  48.  
  49. # 销毁窗口
  50.  
  51. cvDestroyWindow( "src" )
  52. cvDestroyWindow( "canny" )
  53.  
  54. # 释放图像
  55.  
  56. cvReleaseImage( pImg )
  57. cvReleaseImage( pCannyImg )
  58.  
  59. sys.exit(0)
  60.  

注: Python版本由chai2010改写.

Views
Personal tools