让代码更简单

OpenCV边缘检测算法Canny

重要:本文最后更新于2018-08-20 09:06:18,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

opencv的边缘检测算法有很多种,这里介绍最常见到的一种,函数原型如下:

OpenCV

OpenCV

复制
void cvCanny( const CvArr* image, CvArr* edges, double threshold1,
              double threshold2, int aperture_size=3 );

参数详解:

image
输入图像.
edges
输出的边缘图像
threshold1
第一个阈值
threshold2
第二个阈值
aperture_size
Sobel 算子内核大小 (见 cvSobel).

函数 cvCanny 采用 CANNY 算法发现输入图像的边缘而且在输出图像中标识这些边缘。threshold1和threshold2 当中的小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割。

下面是一个边缘检测案例代码:

复制
/**************************************************
 * 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;
}

图片就不贴了,太晚了,改天再补上。

感觉很棒!可以赞赏支持我哟~

0 打赏

评论 (0)

登录后评论
QQ咨询 邮件咨询 狗哥推荐