Python如何使用OpenCV实现边缘检测?详细指南

2021年11月11日02:47:50 发表评论 2,056 次浏览

Python OpenCV如何检测边缘?学习如何在 Python 中使用带有 OpenCV 的 Canny 边缘检测器算法在计算机视觉应用中应用边缘检测。

Python OpenCV实现边缘检测边缘检测是一种图像处理技术,用于寻找图像中对象的边界。它主要通过检测亮度的不连续性来工作。最流行和广泛使用的算法之一是 Canny 边缘检测器。

Canny 边缘检测器是一种边缘检测算子,它使用多阶段算法来检测图像中的各种边缘。

主要阶段是:

  1. 使用高斯模糊算法滤除噪声。
  2. 使用Sobel 滤波器查找边缘的强度和方向。
  3. 通过应用非极大值抑制来隔离最强的边缘并将它们细化为一个像素宽的线。
  4. 使用滞后来隔离最佳边缘。

在此处了解有关 Canny 边缘检测器背后理论的更多信息。

另请阅读: 在 Python 中使用 OpenCV 进行图像转换。

Python OpenCV边缘检测示例:让我们使用OpenCV在 Python 中实现它,安装它:

pip3 install opencv-python matplotlib numpy

打开一个新的 Python 文件并按照以下步骤操作:

import cv2
import numpy as np
import matplotlib.pyplot as plt

Python OpenCV实现边缘检测 - 现在让我们在想要检测边缘时读取图像:

# read the image
image = cv2.imread("little_flower.jpg")

我的当前目录中有一个示例图像,请确保你也这样做。

Python OpenCV如何检测边缘?在我们将图像传递给 Canny 边缘检测器之前,我们需要将图像转换为灰度:

# convert it to grayscale
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

让我们来看看它:

# show the grayscale image
plt.imshow(gray, cmap="gray")
plt.show()
Python如何使用OpenCV实现边缘检测?详细指南

我们现在需要做的就是将此图像传递给cv2.Canny()函数,该函数在输入图像中查找边缘并使用 Canny 算法在输出地图边缘中标记它们:

# perform the canny edge detector to detect image edges
edges = cv2.Canny(gray, threshold1=30, threshold2=100)

阈值 1和阈值 2 之间的最小值用于边缘链接。最大值用于查找强边缘的初始段。

让我们看看结果图像:

Python如何使用OpenCV实现边缘检测?详细指南

有趣的是,尝试微调阈值,看看是否可以做得更好。

Python OpenCV如何检测边缘?如果你想使用实时摄像头,这里是完整的Python OpenCV边缘检测示例代码:

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while True:
    _, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    edges = cv2.Canny(gray, 30, 100)
    cv2.imshow("edges", edges)
    cv2.imshow("gray", gray)
    if cv2.waitKey(1) == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

好的,我们完成了!

Python OpenCV实现边缘检测的目的是捕捉重要事件和世界属性的变化。它是图像处理、图像模式识别和计算机视觉技术的基本步骤之一。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: