Определить круг с идеальной окружностью круга - PullRequest
0 голосов
/ 28 января 2020

Необходимо определить круг с идеальной окружностью с помощью Python, также необходимо создать правило для будущих целей

Правило (а)

  • без Любая перекрывающаяся окружность * берет весь круг, где перекрывается по окружности. Ниже приведен код для ссылки.
    import cv2 as cv
    import numpy as np
    import argparse
    
    ap = argparse.ArgumentParser()
    ap.add_argument("-i", "--image", required=True, help="Path to Image")
    args = vars(ap.parse_args())
    
    image = cv.imread(args['image'])
    output = image.copy()
    img_gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    img_gray = cv.Canny(img_gray,100,200)
    img_gray = cv.GaussianBlur(img_gray, (21,21), cv.BORDER_DEFAULT)
    
    circles = cv.HoughCircles(img_gray, cv.HOUGH_GRADIENT, 1, 20, \
        param1=50, param2=30, minRadius=0, maxRadius=0)
    
    dectected_circles = np.uint16(np.around(circles)) #round(circles[0:]).astype("int")
    
    for (x, y, r) in dectected_circles[0, : ]:
        cv.circle(output, (x, y), r, (0, 255, 0), 3)
        cv.circle(output, (x, y), 2, (0, 128, 255), 3)
    
    cv.imwrite('result.jpg',output)
    

1 Ответ

0 голосов
/ 28 января 2020

Пожалуйста, ознакомьтесь с документацией HoughCircle, есть параметр minDist, который определяет минимальное расстояние между обнаруженными кругами. Если вы знаете диаметр кругов, которые должны быть обнаружены, либо по предварительным знаниям, либо выполнив первый проход с помощью HoughCircles, вы можете затем выполнить второй проход с соответствующим набором minDist. Это должно дать вам только одно обнаружение для перекрывающихся кругов.

С другой стороны, если кружки справа вообще не должны быть устранены, то я просто пропущу через все обнаружение l oop и откажусь от них. расстояние которого меньше суммы двух радиусов.

С уважением

Андреас

...