Canny()函数

Canny()

        小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割.

1. cvCanny:  

  doCanny(in,1.0,3.0,3.0);

  void cvCanny( const CvArr* image,CvArr* edges,double threshold1,double threshold2, int aperture_size=3 );
  image 输入图像,这个必须是单通道的,即灰度图
  edges 输出的边缘图像 ,也是单通道的,但是是黑白的
  threshold1 第一个阈值
  threshold2 第二个阈值
  aperture_size Sobel 算子内核大小
  函数 cvCanny 采用 Canny 算法发现输入图像的边缘而且在输出图像中标识这些边缘。threshold1和threshold2 当中的小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割。

2. 补充一点,灰度图的生成:

  cvCanny函数需要输入图像为灰度图,怎样产生一张灰度图呢?我们可以使用cvLoadImage()载入灰度图。具体参数设置如下说明:

  cvLoadImage函数使用方法:
    cvLoadImage( filename, -1 ); //默认读取图像的原通道数
    cvLoadImage( filename, 0 ); //强制转化读取图像为灰度图
    cvLoadImage( filename, 1 ); //读取彩色图

3. 关于cvCanny函数的一个错误记录:

  出现OpenCV Error:Assertion failed (src.derth()==dst.depth && src.size()==dst.size()) 错误,导致程序中断!

  原因如下:

  错误含义是:原数据和目的数据的深度或者大小不同 导致不能进行赋值变换。  
  1.check这两个图或者矩阵是不是初始化了
  2.如果初始化了,初始化的大小是不是一样,即两者有没有相同的长宽
  3.两者的depth深度是不是一样,即是不是一个是三通道的,一个是单通道的。或者一个是单通道32位浮点类型,一个是单通道8位整形类型。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值