OpenCV:Hough Circles,检测对象问题

OpenCV: Hough Circles, trouble detecting object

在 OpenCV 方面,我是一个完全的初学者,在尝试检测特定大小的圆圈时,我不知道从哪里开始,下面是我当前的代码(不多)以及我正在尝试的图像检测,如果有人可以帮助我或给我一些建议,我将不胜感激,(我已将图像转换为灰度并添加高斯模糊以便更容易检测)谢谢!

Image

import cv2
import numpy as np


test = cv2.imread('test.jpg')
gray_img = cv2.cvtColor(test, cv2.COLOR_BGR2GRAY)
img = cv2.medianBlur(gray_img,  5)
cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)


cv2.imshow("HoughCirlces",  test)
cv2.waitKey()
cv2.destroyAllWindows()

干得好,您快完成了,您现在所要做的就是实际应用 CHT。您正在查找的函数是 cv2.HoughCircles()。您需要传递图像,在您的情况下,您可以使用 img 或 cimg 以及一些可能需要调整的参数。这是一些模板代码

import cv2
import numpy as np


test = cv2.imread('test.jpg')
gray_img = cv2.cvtColor(test, cv2.COLOR_BGR2GRAY)
img = cv2.medianBlur(gray_img,  5)
cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)

circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20,
                            param1=50,param2=30,minRadius=0,maxRadius=0)

circles = np.uint16(np.around(circles))
for i in circles[0,:]:
    # draw the outer circle
    cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
    # draw the center of the circle
    cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)

cv2.imshow("HoughCirlces",  test)
cv2.waitKey()
cv2.destroyAllWindows()

你也可以看看文档和教程。我将在下面 link 它们。 教程:https://docs.opencv.org/4.x/da/d53/tutorial_py_houghcircles.html 文档:https://docs.opencv.org/4.x/dd/d1a/group__imgproc__feature.html#ga47849c3be0d0406ad3ca45db65a25d2d