Canny边缘检测
Wikipedia,自由的百科全书
来自于仕琪的讲稿《使用OpenCV进行图像处理》中的例程
/************************************************** * cvCanny:Canny边缘检测 **************************************************/ /*********************************************************************** * OpenCV example * By Shiqi Yu 2006 ***********************************************************************/ #include "cv.h" #include "cxcore.h" #include "highgui.h" int main( int argc, char** argv ) { //声明IplImage指针 IplImage* pImg = NULL; IplImage* pCannyImg = NULL; //载入图像,强制转化为Gray if( argc == 2 && (pImg = cvLoadImage( argv[1], 0)) != 0 ) { //为canny边缘图像申请空间 pCannyImg = cvCreateImage(cvGetSize(pImg), IPL_DEPTH_8U, 1); //canny边缘检测 cvCanny(pImg, pCannyImg, 50, 150, 3); //创建窗口 cvNamedWindow("src", 1); cvNamedWindow("canny",1); //显示图像 cvShowImage( "src", pImg ); cvShowImage( "canny", pCannyImg ); cvWaitKey(0); //等待按键 //销毁窗口 cvDestroyWindow( "src" ); cvDestroyWindow( "canny" ); //释放图像 cvReleaseImage( &pImg ); cvReleaseImage( &pCannyImg ); return 0; } return -1; }
[编辑]
Python版本
# -*- coding:utf-8 -*- ########################################################### # OpenCV example # # cvCanny:Canny边缘检测 # # By ChaiShushan 2008 ########################################################### import sys # 导入OpenCV模块 from opencv.cv import * from opencv.highgui import * if __name__ == '__main__': if len(sys.argv) == 2: # 载入图像,强制转化为Gray pImg = cvLoadImage(sys.argv[1], 0) if not pImg: sys.exit(-1) # 为canny边缘图像申请空间 pCannyImg = cvCreateImage(cvGetSize(pImg), IPL_DEPTH_8U, 1) # canny边缘检测 cvCanny(pImg, pCannyImg, 50, 150, 3) # 创建窗口 cvNamedWindow("src", 1) cvNamedWindow("canny",1) # 显示图像 cvShowImage( "src", pImg ) cvShowImage( "canny", pCannyImg ) # 等待按键 cvWaitKey(0); # 销毁窗口 cvDestroyWindow( "src" ) cvDestroyWindow( "canny" ) # 释放图像 cvReleaseImage( pImg ) cvReleaseImage( pCannyImg ) sys.exit(0)
注: Python版本由chai2010改写.


