Canny边缘检测原理

2 篇文章 0 订阅
1 篇文章 0 订阅

 有时候,我们需要提取一个图像的边缘利于计算。

  opencv实现了Canny边缘检测的函数,方便调用。Canny算子的原理是首先在x,y方向求一阶导数,然后组合为4个方向的导数。这些方向的导数达到局部最大值的点就是组成边缘的候选点。

  1.1cvCanny函数:

CVAPI(void)  cvCanny( const CvArr* image, CvArr* edges, double threshold1,
                      double threshold2, int  aperture_size CV_DEFAULT(3) );

  第一个参数:输入:是灰度图,就算是彩色图也会处理成灰度图

  第二个参数:输出的图的位置,输出的图式二值图

  第三第四个参数:是两个阈值,上限与下限,如果一个像素的梯度大于上限,则被认为是边缘像素,如果低于下限则被抛弃,如果介于两者之间,只有当其与高于上限阈值的像素连接时才会被接受。

  第五个参数:表示模板的大小,如果是3,则表示3*3矩阵的大小

  

  有时候在图像变化的时候需要实时的变化阈值,则可以用滑动条来处理。

  1.2 cvCreateTrackbar

CVAPI(int) cvCreateTrackbar( const char* trackbar_name, const char* window_name,
                             int* value, int count, CvTrackbarCallback on_change CV_DEFAULT(NULL));

  函数说明:

  第一个参数表示该trackbar的名称。

  第二个参数表示窗口名称,该trackbar将显示在这个窗口内。

  第三个参数表示创建时滑块的位置。

  第四个参数表示滑块位置的最大值,最小值固定为0。

  第五个参数表示回调函数。当滑块位置有变化时,系统会调用该回调函数。

  

  1.3 配合使用的回调函数

typedef void (CV_CDECL *CvTrackbarCallback)(int pos);

  当trackbar位置被改变的时,系统会调用这个回调函数,并将参数pos设置为表示trackbar位置的数值

 

演示程序:

  

  View Code

  

  pos=0:

  

  pos=50:

  

 

  参考:http://blog.csdn.net/morewindows/article/details/8239625,学习opencv

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值