在这篇OpenCV Python文章中,我们将讨论Canny边缘检测。

什么是Canny边缘检测?

OpenCV提供了一个非常方便的函数,称为Canny边缘检测(Canny Edge Detection),该算法的发明者是John F. Canny),它非常流行,不仅因为它的有效性,而且在OpenCV程序中实现很简单。

这些是Canny边缘检测的步骤

1、降噪:由于边缘检测容易受到图像中噪声的影响,第一步是使用5×5高斯滤波器去除图像中的噪声。

2、计算梯度

3、Non-maximum Suppression非最大值抑制:在得到梯度大小和方向后,对图像进行全扫描,去除不需要的可能不构成边缘的像素。为此,在每个像素上,检查像素在梯度方向上是否为其邻域内的局部最大值。

4、对所有检测到的边缘进行双阈值处理

5、分析所有的边和它们的联系

以下是OpenCV Python Canny边缘检测的完整代码

import cv2

image = cv2.imread("www.linuxmi.com.jpg", 0)
cv2.imwrite("canny.jpg",    cv2.Canny(image,    100,    200))
cv2.imshow("canny",    cv2.imread("canny.jpg"))
cv2.imshow("Original Image", image)
cv2.waitKey()
cv2.destroyAllWindows()

因此,在这五个步骤中,OpenCV将上述所有内容都放在一个函数cv2.Canny()中。我们来看看如何使用它。第一个参数是我们的输入图像。第二个和第三个参数分别是minVal和maxVal。第三个参数是aperture_size。它是用于寻找图像梯度的Sobel内核的大小。默认情况下是3。最后一个参数是L2gradient,它指定了寻找梯度大小的方程。如果为True,则使用上述公式,更准确,否则使用此函数:Edge_Gradient(G)=|Gx|+|Gy|。默认情况下,它是False。

这行代码用于读取图像确保在工作目录中有一个图像

image = cv2.imread(“www.linuxmi.com.jpg“, 0)

这也是我们的Canny函数,我们输入image,minValue和maxValue。

cv2.Canny(image, 100, 200)

运行完整的代码,结果如下:

发表评论

电子邮件地址不会被公开。 必填项已用*标注