使用 Python 中的 OpenCV 在图像中查找圆圈

pythonserver side programmingprogramming

OpenCV 平台为 Python 提供了 cv2 库。这可用于各种形状分析,这在计算机视觉中很有用。在本文中,我们将使用 Open CV 识别圆圈的形状。为此,我们将使用 cv2.HoughCircles() 函数。使用霍夫变换在灰度图像中查找圆圈。在下面的示例中,我们将以图像作为输入。然后复制它并应用此变换函数来识别输出中的圆圈。

语法

cv2.HoughCircles(image, method, dp, minDist)
其中
Image 是转换为灰度的图像文件
Method 是用于检测圆圈的算法。
Dp 是累加器分辨率与图像分辨率的反比。
minDist 是检测到的圆的中心坐标之间的最小距离。

示例

在下面的例子中,我们使用下面的图像作为输入图像。然后运行下面的程序来获取圆圈。

下面的程序检测图像文件中是否存在圆圈。如果存在圆圈,则突出显示它。

示例

import cv2
import numpy as np
image = cv2.imread('circle_ellipse_2.JPG')
output = image.copy()
img = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 查找圆圈
circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1.3, 100)
# 如果找到某个圆圈
if circles is not None:
   # 获取 (x, y, r) 作为整数
   circles = np.round(circles[0, :]).astype("int")
   print(circles)
   # 循环遍历圆圈
   for (x, y, r) in circles:
      cv2.circle(output, (x, y), r, (0, 255, 0), 2)
# 显示输出图像
cv2.imshow("circle",output)
cv2.waitKey(0)

运行上述代码得到以下结果 −

输出

[[93 98 84]]

我们得到下面的显示输出的图表。


相关文章