迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > 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。

上一篇:在 Python 中使用 OpenCV 筛选

下一篇:没有了

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

本文地址:

相关文章

在 Python 中使用 OpenCV 筛选

发布时间:2023/06/01 浏览次数:54 分类:Python

本教程将演示如何使用 OpenCV 实现 SIFT 算法并将其用于 Python 中的特征匹配。 我们还将学习在 Python 中使用 OpenCV 使用 SIFT 算法来匹配两个图像。

OpenCV ArUco 标记

发布时间:2023/06/01 浏览次数:110 分类:Python

本篇文章将介绍使用 OpenCV 的 cv2.aruco.detectMarkers() 函数检测 ArUco 标记。使用 OpenCV 检测 ArUco 标记

OpenCV 包配置

发布时间:2023/06/01 浏览次数:159 分类:Python

OpenCV 是一个机器学习库,提供与计算机视觉应用程序相关的各种功能。 OpenCV 可以与 C++、Python、Java 和 MATLAB 一起使用。下面我们将列出安装和运行 OpenCV 时的一些常见问题以及如何解决这些问

使用 OpenCV 在图像上使用 Bitwise_AND

发布时间:2023/06/01 浏览次数:199 分类:Python

按位运算符通常用于对使用单个位操作的位或二进制数的模式执行按位运算。 OpenCV 使用相同的概念来处理和提取图像中的信息。在本文中,我们将具体了解如何使用 Python OpenCV 库来使用 Bitwi

OpenCV 中的图像遮罩

发布时间:2023/06/01 浏览次数:55 分类:Python

如果我们想过滤掉图像的某些部分,然后将这个过滤掉的部分与另一幅图像结合起来,那么这可以使用遮罩来完成。 在 OpenCV 中,按位与运算符用于将两个不同的图像合并为一个,或者它可以将

Mac 中 Python 没有名为 CV2 的模块

发布时间:2023/06/01 浏览次数:83 分类:Python

我们将通过示例介绍如何在Python中正确安装和导入OpenCV模块。在 Python 的 Mac 中没有名为 CV2 的模块 首先,我们必须了解什么是 OpenCV 以及为什么在 Python 中使用它。

用 Python 发送带附件的电子邮件

发布时间:2023/06/01 浏览次数:84 分类:Python

本篇文章将介绍如何使用Python发送带附件的邮件。 为此,我们不需要外部库来发送邮件。 相反,我们导入一个名为 smtplib 的模块并使用它,因为邮件是通过 SMTP 协议发送的。 让我们看看我们该

在 Python 中验证电子邮件地址

发布时间:2023/06/01 浏览次数:76 分类:Python

有一些内置功能(例如正则表达式)和库(例如 dnspython)可以帮助完成这些过程。 本文将解释如何使用这些功能和库在 Python 中验证电子邮件。在 Python 中使用正则表达式验证电子邮件

使用 Python 向多个地址发送电子邮件

发布时间:2023/06/01 浏览次数:125 分类:Python

在本文中,我们将演示如何使用 Python 编程语言向使用不同电子邮件地址的不同收件人发送电子邮件。 具体来说,我们将向许多不同的人发送电子邮件。使用 Python 向多个地址发送电子邮件

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便