【OpenCV学习笔记】【函数学习】十二(cvCanny()函数及其阈值设置的比较)

anny算子有两个阈值,上限和下限,构造函数定义为:

void cvCanny(const CvArr* img,CvArr* edges,double lowthreshold,double highthreshold,int apertureSize=3);

需要注意的是canny需要输入的是灰度图像,所以我们在使用canny之前要使用cvCvtColor将之转换为灰度图像,一下程序对高低阈值不同比例,不同大小进行设置来观察cvCanny的显示效果:

// TestCanny.cpp : 定义控制台应用程序的入口点。
// 设置canny中的阈值,对参数进行实验

#include "stdafx.h"
#include "cv.h"
#include "highgui.h"

int main(int argc,char** argv)
{
 IplImage* src=cvLoadImage(argv[1],1);
 IplImage* gray=cvCreateImage(cvSize(src->width,src->height),8,1);
 IplImage* dst0=cvCreateImage(cvSize(src->width,src->height),8,1);
 IplImage* dst1=cvCreateImage(cvSize(src->width,src->height),8,1);
 IplImage* dst2=cvCreateImage(cvSize(src->width,src->height),8,1);
 IplImage* dst3=cvCreateImage(cvSize(src->width,src->height),8,1);
 cvCvtColor(src,gray,CV_RGB2GRAY);
 cvCanny(gray,dst0,50,75,3);
 cvCanny(gray,dst1,120,80,3);
 cvCanny(gray,dst3,120,30,3);
 cvCanny(gray,dst2,180,120,3);
 cvNamedWindow("gray",0);
 cvNamedWindow("dst0",0);
 cvNamedWindow("dst1",0);
 cvNamedWindow("dst2",0);
 cvNamedWindow("dst3",0);
 cvShowImage("gray",gray);
 cvShowImage("dst0",dst0);
 cvShowImage("dst1",dst1);
 cvShowImage("dst2",dst2);
 cvShowImage("dst3",dst2);
 cvWaitKey(0);
 cvReleaseImage(&gray);
 cvReleaseImage(&dst0);
 cvReleaseImage(&dst1);
 cvReleaseImage(&dst2);
 cvReleaseImage(&dst3);
 cvDestroyWindow("gray");
 cvDestroyWindow("dst0");
 cvDestroyWindow("dst1");
 cvDestroyWindow("dst2");
 cvDestroyWindow("dst3");
}

cvCanny()的使用以及阈值设置的比较 - 后青春期 - 后青春期 的博客
图1是显示高低阈值在相同比例不同大小的情况下显示的图像,很显然随着阈值的增加,图像的边缘也趋于明显,因为过滤了许多杂点。这点也是很容易理解的。

 

cvCanny()的使用以及阈值设置的比较 - 后青春期 - 后青春期 的博客
图2显示的是高低阈值的比例不同所显示的结果。
因此我们可以总结以上实验的结果从而获得canny算子得实质:如果一个像素的梯度大与上限值,则被认为是边缘像素,如果小于下限阈值,则被抛弃,那么如果该店的梯度位于两者之间呢?则当其与高于上限值的像素点连接时我们才保留,否则删除。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值