Python 3.x 如何在opencv python中自动设置HoughCircles参数以检测不同大小的圆?
我想自动设置HoughCircles参数,以检测图像中所有大小的圆。并且还应该检测出一组大小相同的圆 我试着在一张图片上画一组大小相同的圆圈。在不同的图像中有一组大小相同的圆,两幅图像中的圆的大小是不同的 因此,如何自动设置HoughCircles参数,以检测任何图像中的圆组 请帮帮我Python 3.x 如何在opencv python中自动设置HoughCircles参数以检测不同大小的圆?,python-3.x,image-processing,opencv3.0,Python 3.x,Image Processing,Opencv3.0,我想自动设置HoughCircles参数,以检测图像中所有大小的圆。并且还应该检测出一组大小相同的圆 我试着在一张图片上画一组大小相同的圆圈。在不同的图像中有一组大小相同的圆,两幅图像中的圆的大小是不同的 因此,如何自动设置HoughCircles参数,以检测任何图像中的圆组 请帮帮我 谢谢你,如果你想把相同大小的圆圈集中起来,下面的内容应该是一个很好的起点,可以根据你的应用程序进行调整 import cv2 import numpy as np img = cv2.imread('C:\\T
谢谢你,如果你想把相同大小的圆圈集中起来,下面的内容应该是一个很好的起点,可以根据你的应用程序进行调整
import cv2
import numpy as np
img = cv2.imread('C:\\Test\\circles.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, dp=2.0, minDist=50, minRadius=20, maxRadius=250)
radius_map = {}
for n in range(20, 250, 1):
radius_map[n] = []
if circles is not None:
circles = np.round(circles[0, :]).astype("int")
for (x, y, r) in circles:
radius_map[r].append((x, y, r))
for key in radius_map:
if len(radius_map[key]) > 0:
output = img.copy()
for x, y, r in radius_map[key]:
cv2.circle(output, (x, y), r, (0, 255, 0), 4)
cv2.imshow(f"Radius {key}", output)
cv2.waitKey(0)
如果您需要一些阈值带,例如,半径为50和51的圆被视为大小相同,您可以在radius\u map
上迭代dict对象并将半径容器分组在一起
输入图像:
输出图像:
嗨,乔恩,谢谢你的回答。我想在一段时间内检测一组圆、正方形或矩形(形状可以有不同的大小)。@FarzanaAnjum你最初的问题只提到了圆。检测各种形状是一个完全不同的问题。@FarzanaAnjum如果这个答案满足了您关于圆圈案例的问题,请发布一个关于其他案例的新问题,我将很乐意提供帮助。如果您提供一个预期输入的示例,将对您将来的问题有很大帮助。考虑在下一个问题中发布一个示例图像,并且也明确地指示所有用例。