OpenCV-Python-图像梯度与Canny边缘检测

本文介绍了三种常见的边缘检测技术:Sobel算子、Laplacian算子和Canny边缘检测。详细解释了每种方法的工作原理及使用步骤,并提供了具体的参数设置指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

© Fu Xianjun. All Rights Reserved.


前言

Sobel 算子是一种离散的微分算子,该算子结合了高斯平滑和微分求导运算。该
算子利用局部差分寻找边缘,计算所得的是一个梯度的近似值。

使用步骤

1.Sobel算子

dst=cv2.Sobeldst=cv2.Sobel((src,ddepth,dx,dy[,ksize[,scale[,delta[,borderType]]]]src,ddepth,dx,dy[,ksize[,scale[,delta[,borderType]]]]))
1.dx代表x方向上的求导阶数
2.dy代表y方向上的求导阶数
3.ksize代表Sobel核的大小。该值为-1时,则会使用Scharr算子进行运算。
4.scale代表计算导数值时所采用的缩放因子,默认情况下该值是1,是没有缩放的
5.delta代表加在目标图像dst上的值,该值是可选的,默认为0

通常要将函数cv2.Sobel()内参数ddepth的值设置为“cv2.CV_64F”

计算x方向和y方向的边缘叠加:通过组合方式实现:
dx=cv2.Sobel(src ,ddepth ,1 ,0)
dy=cv2.Sobel(src ,ddepth ,0 ,1)
dst=cv2.addWeighted(src1 ,alpha ,src2 ,beta ,gamma)

2.Laplacian算子

dst=cv2.Laplacian(src,ddepth[,ksize[,scale[,delta[,borderType]]]])
ksize代表用于计算二阶导数的核尺寸大小。该值必须是正的奇数

3.Canny边缘检测

edges=cv2.Canny(image,threshold1,threshold2[,apertureSize[,L2gradient]])
threshold1表示处理过程中的第一个阈值。
threshold2表示处理过程中的第二个阈值。
apertureSize表示Sobel算子的孔径大小。
L2gradient为计算图像梯度幅度(gradient magnitude)的标识。其默认值为False。


总结

Canny边缘检测基础为重中之重,梯度算子数学意义为难点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值