OpenCV学习-P34-P38 Opencv边缘检测

在这里插入图片描述
边缘检测分为两类:基于搜索和基于零穿越
基于搜索:寻找图像的一阶导数的最大值来检测边界,然后利用计算结果估计边缘的局部方向,通常采用梯度的方向,并利用此方向找到局部梯度模的最大值,代表算法是Sobel算子和Scharr算子
在这里插入图片描述
基于零穿越:通过寻找图像二阶导数零穿越来寻找边界,代表算法是Laplacian算子
在这里插入图片描述

Sobel检测算子

Sobel算子检测效率高,但是检测结果不如Canny准确

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
sobel算子注意以下几点:
1.soble计算后会出现小于0或大于255,所以在sobel函数中需要传入cv_16s转化为16位有符号的数据类型
2.使用sobel算子后还需要使用cv.convertScaleAbs重新转换为uint8
3.最终需要使用cv.addWeighted将x和y方向的梯度结合

#1 读取图片
img= cv2.imread(r'.\\Image_20220709101917854.bmp',0)
#2 计算sobel算子
x = cv2.Sobel(img,cv2.CV_16S,1,0)
y = cv2.Sobel(img,cv2.CV_16S,0,1)
#3 将数据进行转换
Scale_abX = cv2.convertScaleAbs(x)
Scale_abY = cv2.convertScaleAbs(y)
#4结果合成
result = cv2.addWeighted(Scale_abX,0.5,Scale_abY,0.5,0)
plt.imshow(result,cmap="gray")
plt.show()

Laplacian检测算子

在这里插入图片描述

img= cv2.imread(r'.\\Image_20220709101917854.bmp',0)

x = cv2.Laplacian(img,cv2.CV_16S)
result=cv2.convertScaleAbs(x)
plt.imshow(result,cmap="gray")
plt.show()

在这里插入图片描述

Canny边缘检测算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Canny边缘检测原理:
第一步:噪声去除,使用高斯滤波
第二步:计算图像梯度,使用Sobel算子计算x和y方向上的梯度和方向
第三步:非极大值抑制,对每个像素进行扫描,看这个点的梯度是不是周围具有相同梯度方向的点最大的
第四部:滞后阈值

在这里插入图片描述

边缘检测总结

在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值