Opencv2系列学习笔记9(使用Canny算子检测轮廓)

本文介绍了Canny算子在边缘检测中的优势,它通过双阀值策略解决边缘检测中过粗和阀值选择的问题。文章提供了OpenCV和Matlab中实现Canny算子的代码示例,并解释了相关参数,如阈值和高斯滤波器的标准差。对比Sobel算子和拉普拉斯变换,Canny算子能获得更优的边缘检测结果。
摘要由CSDN通过智能技术生成

前面我们用sobel算子和拉普拉斯变换也可以进行边缘检测,见我的上一篇blog:

http://blog.csdn.net/lu597203933/article/details/17252285

但这样得到的二值边缘图像有两大缺点。第一:检测到的边缘过粗,这意味着难以实现物体的精确定位。第二:难以找到这样的阀值,即能足够低检测到所有重要的边缘,同时也不至于包含过多次要的边缘。

这个正是canny算子要解决的。

Canny算子通常基于sobel算子,有两个阀值,这样可以得到两幅边缘图;canny算法组合这两幅边缘图以生成一副“最优”的轮廓图。如果存在连续的边缘点,则将低阀值图像中的边缘点与高阀值图像中的边缘相连接,那么就保留低阀值图像中的边缘点。这种使用双阀值以得到二值图像的策略被称为磁滞阀值化。

代码:

int main()
{
	Mat image = imread("F:\\lena.png", 0);    // 这里也可以是BGR 但是想想提取轮廓 效果是一样的
	if(!image.data)
	{
		cout << "Fail to load image" << endl;
		return 0;
	}
	Mat result;
	Canny(image, result, 150, 220);
	namedWindow("cannyResult");
	imsh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值