Opencv python基础入门(4)---sobel算子及边缘检测

本文主要介绍sobel算子及边缘检测:

代码如下:

#sobel,ddepth如果设置为-1的话,水平处理只能取出左边界,右边界为负值丢失了,所以需要先用64F扩展然后用convertScaleAbs转换
#dx,dy都设置为1和使用addWeighted用法差别:addWeighted更细节
img2=cv2.Sobel(img,ddepth=cv2.CV_64F,dx=1,dy=0,ksize=3)
img3=cv2.Sobel(img,ddepth=cv2.CV_64F,dx=0,dy=1,ksize=3)
img2=cv2.convertScaleAbs(img2)
img3=cv2.convertScaleAbs(img3)
img2=cv2.addWeighted(img2,0.5,img3,0.5,0)
#scharr,中心权重比例更大,比sobel显示更多细节的边缘,但是这个边缘是否需要取决于应用,有可能压根不需要那么多的细节
img2=cv2.Scharr(img,ddepth=cv2.CV_64F,dx=1,dy=0)
img3=cv2.Scharr(img,ddepth=cv2.CV_64F,dx=0,dy=1)
img2=cv2.convertScaleAbs(img2)
img3=cv2.convertScaleAbs(img3)
img2=cv2.addWeighted(img2,0.5,img3,0.5,0)
#拉普拉斯算子,XY方向都做2次梯度运算,sobel,scharr都是只做一次,直接可以得出XY方向的边缘
img2=cv2.Laplacian(img,ddepth=cv2.CV_64F)
img2=cv2.convertScaleAbs(img2)
#canny函数 边缘检测,threshold1为最小值阀值,满足则丢弃,threshold2为最大值,满足则留下
img2=cv2.Canny(img,threshold1=100,threshold2=200)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值