Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在opencv python中自动设置HoughCircles参数以检测不同大小的圆?_Python 3.x_Image Processing_Opencv3.0 - Fatal编程技术网

Python 3.x 如何在opencv python中自动设置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

我想自动设置HoughCircles参数,以检测图像中所有大小的圆。并且还应该检测出一组大小相同的圆

我试着在一张图片上画一组大小相同的圆圈。在不同的图像中有一组大小相同的圆,两幅图像中的圆的大小是不同的

因此,如何自动设置HoughCircles参数,以检测任何图像中的圆组

请帮帮我


谢谢你,如果你想把相同大小的圆圈集中起来,下面的内容应该是一个很好的起点,可以根据你的应用程序进行调整

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如果这个答案满足了您关于圆圈案例的问题,请发布一个关于其他案例的新问题,我将很乐意提供帮助。如果您提供一个预期输入的示例,将对您将来的问题有很大帮助。考虑在下一个问题中发布一个示例图像,并且也明确地指示所有用例。