OpenCV边缘检测

© Fu Xianjun. All Rights Reserved. 今天小赵带大家进入OpenCV的边缘检测,素材依然来自我们的小傅老师,我还是那个搬运工,让我们一起来领略一下奇妙的代码之旅。


前言

边缘检测一边用于对物体的形状进行寻找然后标注出来,便于进行识别。


提示:以下是本篇文章正文内容,下面案例可供参考

一、边缘检测是什么?

边缘检测是指通过对于图的边缘进行检测并表示出来,并于识别和进行下一步操作。

二、操作步骤

1.Canny边缘检测

  1. 使用高斯滤波器,以平滑图像,滤除噪声。

  2. 计算图像中每个像素点的梯度强度和方向。

  3. 应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测带来的杂散响应。

  4. 应用双阈值(Double-Threshold)检测来确定真实的和潜在的边缘。

  5. 通过抑制孤立的弱边缘最终完成边缘检测。
    在这里插入图片描述

代码如下(示例):

def doCanny(x):
    position = cv2.getTrackbarPos("CannyBar", "Canny")
    canny = cv2.Canny(gauss, position, position * 2.5)
    cv2.imshow("Canny", canny)


img = cv2.imread("peppa.png", 0)
gauss = cv2.GaussianBlur(img, (3, 3), 1)

cv2.namedWindow("Canny")
cv2.createTrackbar("CannyBar", "Canny", 1, 100, doCanny)
cv2.waitKey()
cv2.destroyAllWindows()

代码效果(示例):

在这里插入图片描述
这里通过了写入滑条的方式对于这张图操作, 通过滑条滑动的后更改阈值的方式来提取图像更精准更适合的边缘信息。

2.车道实战

代码如下(示例):

def canny(image):
    gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY)
    blur = cv2.GaussianBlur(gray,(5,5),0)#降低噪点
    canny = cv2.Canny(blur,50,150)
    return canny

def region_of_interest(image):#应用遮罩
    height = image.shape[0]
    ploygons = np.array([[(200,height),(1100,height),(550,250)]])
    mask = np.zeros_like(image)
    cv2.fillPoly(mask,ploygons,255)
    masked_image = cv2.bitwise_and(image,mask)#通过 bitwise_and 对两个图像的每一个像素做与运算,来将遮罩应用图像
    return masked_image

# read image
image = cv2.imread('test_image.webp')
# copy not reference to
lane_image = np.copy(image)
canny = canny(lane_image)
cv2.imshow('canny',canny)
cv2.imshow('region_of_interest(canny)',region_of_interest(canny))

cv2.waitKey(0)
cv2.destroyAllWindows()

代码如下(示例):

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


总结

提示:这里对文章进行总结:
例如:以上就是对于边缘检测Canny的讲解了,其实一般情况下对于轮廓描写的话我们一般不用Canny来检测,但是各有各的用途,喜欢图像检测的朋友们一定要了解一下呀。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值