学习笔记(32):Python+OpenCV计算机视觉-canny边缘检测
立即学习:https://edu.csdn.net/course/play/10552/234947?utm_source=blogtoedu canny边缘检测的一般步骤 ① 去噪 边缘检测容易受到噪声的影响。因此,在进行边缘检测前,通常需要进行去噪。 通常采用高斯滤波器。 ② 梯度 对平滑后的图像计算梯度的大小和方向 梯度的方向一般总是与边界垂直 梯队方向背归为四类:垂直,水平,两个对角线方向。 ③非极大值抑制 在获得了梯度和方向后,遍历图像,去除所有不是边界的点(判断当前像素点是否是周围像素点中具有相同方向梯度的最大值) ④滞后阈值 edges = cv2.Canny(src,thr Canny边缘检测是一种经典的计算机视觉算法,用于在图像中检测物体的边缘。它是由John F. Canny在1986年提出的,被广泛应用于图像处理和计算机视觉领域。本篇学习笔记将深入探讨Canny边缘检测的原理和实现过程。 1. **去噪** 在边缘检测之前,首先需要对图像进行去噪处理,因为噪声会干扰边缘检测的准确性。常用的方法是高斯滤波器,它可以有效地平滑图像,同时保留边缘的细节。高斯滤波器通过一个卷积核对图像进行操作,该核的权重分布遵循高斯函数,可以有效地减小高频噪声的影响。 2. **梯度计算** 去噪后的图像,我们需要计算其梯度。这包括梯度的大小和方向。梯度大小反映了图像亮度变化的速率,而梯度方向则指示了这个变化的方向。通常,我们使用Sobel算子或者Prewitt算子来计算梯度。这些算子由两个方向的差分模板组成,分别对应于水平和垂直方向,从而可以得到图像的水平和垂直梯度分量。 3. **非极大值抑制** 非极大值抑制是Canny算法的关键步骤,目的是消除由于噪声产生的虚假边缘。在获取了梯度大小和方向之后,我们遍历图像,检查每个像素点。如果当前像素点的梯度值不是其邻域内沿着梯度方向的最大值,那么就将该点的梯度值设为零,从而抑制非边缘的梯度响应。 4. **滞后阈值** 最后一步是应用双阈值检测。Canny算法使用两个阈值,阈值1(minVal)和阈值2(maxVal)。小于阈值1的点被视为噪声,大于阈值2的点被视为强边缘,介于两者之间的点则根据它们是否连接到强边缘来决定是否保留。这个过程有助于减少边缘断裂和虚假边缘的出现,同时确保检测到连续且清晰的边缘。 以下是一个使用Python和OpenCV库实现Canny边缘检测的示例代码: ```python import cv2 # 读取图像 img = cv2.imread('111.jpg', cv2.IMREAD_UNCHANGED) # 转换为灰度图像 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 应用Canny边缘检测 edges = cv2.Canny(gray, 50, 150) # 创建并显示结果窗口 cv2.namedWindow('edges', cv2.WINDOW_AUTOSIZE) cv2.imshow('edges', edges) # 等待用户按键,然后关闭窗口 cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这个例子中,`cv2.Canny()`函数的参数`threshold1`(50)和`threshold2`(150)分别对应于两个阈值。你可以调整这两个值来改变边缘检测的结果,较大的值会产生更少但更明显的边缘,而较小的值则会检测到更多的边缘,但可能包含更多的噪声。 Canny边缘检测是一个综合的边缘检测算法,结合了噪声过滤、梯度计算、非极大值抑制和双阈值检测等步骤,旨在提供高质量的边缘检测结果。在实际应用中,通过适当调整参数和预处理步骤,可以优化Canny算法以适应不同的图像和应用场景。
- 粉丝: 6
- 资源: 870
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- JSONView-for-Chrome
- 博图V17下基于FB块的交通灯程序
- axure浏览器插件0.7.0
- 一个3D旋转的圣诞树,有以下特点: 1. 树由三个绿色三角形组成 2.顶部有一个闪烁的黄色星星 3.底部有棕色树干 4.树上装饰有不同颜色的圣诞球 5.整棵树会缓慢旋转 6.星星和圣诞球都有闪烁效果
- 最新圣诞节生成头像微信小程序源码
- 分布式作业3:使用uDDS之服务器端
- 多功能可折叠画图板(cero+CAD+说明书)全套技术开发资料100%好用.zip
- 方块小孔检查机(含工程图sw19可编辑+bom)全套技术开发资料100%好用.zip
- Hi3519DV500R001C01SPC011海思3519dv500 SDK开发包
- docker安装应用(非常实用)PDF
- 聚合DNS已更新SSL证书自动申请与部署功能
- sdfgvhgfhfgh
- 基于jsp+servlet的房产销售管理系统的设计与实现.doc
- 基于jsp+servlet的美食交流论坛的设计与实现.doc
- abb plc串口通讯协议comli白皮书
- JQuery前端汇聚loading