迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 中的 OpenCV Canny

作者:迹忆客 最近更新:2023/06/01 浏览次数:

我们使用 opencv 库处理人工智能、机器学习和更多技术中计算机视觉的图像和图形。 我们可以使用这个库中的功能来有效地读取和处理图像。

本篇文章将介绍 Python 中的 cv2.canny() 函数。


在 Python 中使用 cv2.canny() 函数

cv2.canny() 函数实现了由 John F. Canny 开发的 Canny 边缘检测算法。 我们可以使用这个函数来检测给定图像的边缘。

该算法本身有多个阶段。

  1. 第一阶段涉及降噪,为此,该算法使用 5x5 高斯滤波器。
  2. 下一阶段涉及找到给定图像的强度梯度。 在这个阶段,图像被平滑,然后被传递到 Sobel 内核,在那里它沿着 x 和 y 轴被过滤,并为每个轴找到它的梯度。
  3. 在第三阶段,每个像素都用梯度方向的局部最大值进行检查,以去除不形成边缘的不需要的像素。
  4. 最后阶段是对边缘进行分类的阶段。 取两个阈值,minVal 和 maxVal。

    梯度值大于 maxVal 的边是边,小于 minVal 的不是边。 这些阈值的其余部分根据它们的连接性进行分类。

以上所有阶段均由 cv2.canny() 函数实现。 在确定此功能的参数时,有必要了解这些阶段。

在下面的示例中,我们将检测图像的边缘。

import cv2

img = cv2.imread('jiyik.png')
e = cv2.Canny(img, threshold1 = 50, threshold2 = 100)

cv2.imshow('Edges Detected',e)
cv2.waitKey(0)
cv2.destroyAllWindows()

在上面的示例中,我们使用 cv2.imread() 函数读取图像。 使用 cv2.canny() 函数检测此图像的边缘。

注意函数 threshold1 和 threshold2 中的两个参数。 这两个参数是前面讨论的 minVal 和 maxVal 阈值频率的值。

必须提供这两个值。

在对给定图像的边缘进行分类后,我们使用 cv2.imshow() 函数将其显示在新窗口中。 示例中使用了 cv2.waitkey(0) 函数来防止解释器自动关闭创建的窗口并等待用户按下某个键。

cv2.destroyAllWindows() 函数关闭所有窗口。

cv2.canny() 函数还接受两个额外的可选参数,称为 apertureSize 和 L2gradient。 apertureSize 参数指定 Sobel 内核的孔径大小。

默认情况下,它的值为三,可以取三到五之间的任何奇数。 我们可以增加 apertureSize 以从图像中获取更多特征。

L2gradient 采用 True 或 False 值,默认为 False。

如果我们指定L2gradient参数为True,则使用新的L2Gradient算法计算梯度值; 否则,使用传统方程。 新算法往往更准确一些。


总结

我们在本教程中讨论了如何使用 cv2.canny() 函数。 我们讨论了 Canny 边缘检测算法以及该函数如何在内部实现它。

该功能已通过示例进行了演示。 我们还讨论了这个函数的参数。

有些是强制性的,threshold1 和 threshold2,而另一些是可选的,apertureSize 和 L2gradient。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:Python

Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。

Pandas 追加数据到 CSV 中

发布时间:2024/04/24 浏览次数:352 分类:Python

本教程演示了如何在追加模式下使用 to_csv()向现有的 CSV 文件添加数据。

Pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:Python

本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。

Pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:Python

本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便