OpenCV—图像梯度与Canny边缘检测

© Fu Xianjun. All Rights Reserved.


一、Sobel算子

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

语法形式: dst=cv2.Sobel(src, ddepth, dx, dy[, ksize[, scale[, delta[, borderType] ] ] ])

  • dx代表x方向上的求导阶数。
  • dy代表y方向上的求导阶数。
  • ksize代表Sobel核的大小。该值为-1时,则会使用Scharr算子进行运算
  • scale代表计算导数值时所采用的缩放因子,默认情况下该值是1,是没有缩放的。
  • delta代表加在目标图像dst上的值,该值是可选的,默认为0。
  • ddepth代表输出图像的深度。

ddepth值:

输入图像的深度(src.depth) 输出图像深度(ddepth)
cv2.CV_8U -1/cv2.CV_16S/cv2.CV32F/cv2.CV_64F
cv2.CV_16U/cv2.CV_16S -1/cv2.CV32F/cv2.CV_64F
cv2.CV_32F -1/cv2.CV32F/cv2.CV_64F
cv2.CV_64F -1/cv2.CV_64F
  • 通常要将函数cv2.Sobel()内参数ddepth的值设置为“cv2.CV_64F”

1、方向

dst=cv2.Sobel(src, ddepth, dx, dy[, ksize[, scale[, delta[, borderType] ] ] ])

dx代表x方向上的求导阶数 ; dy代表y方向上的求导阶数。

  • 计算x方向边缘(梯度):dx=1,dy=0 语法为:dst=cv2.Sobel(src ,ddepth ,1 ,0)
sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)
sobelx = cv2.convertScaleAbs(sobelx)
cv_show("sobelx",sobelx
  • 计算y方向边缘(梯度):dx=0,dy=1 语法为:dst=cv2.Sobel(src ,ddepth ,0 ,1)
sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值