как найти полукруг на картинке?

Подскажите как найти полукруг на картинке ? Есть такой код, но он находит полный круг на картинке

import numpy as np
import argparse
import cv2

parser = argparse.ArgumentParser()
parser.add_argument("image", metavar="image_file", help = "Image file")
args = parser.parse_args()

image = cv2.imread(args.image)
image_output = image.copy()
# конвертация в grayscale
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# детекция кругов
circles = cv2.HoughCircles(image_gray, cv2.HOUGH_GRADIENT, 1.4, 1, param1=1, param2=20, minRadius=6, maxRadius=10)

if circles is not None:
    # конвертация координат центра и радиуса в int
    circles = np.round(circles[0, :]).astype("int")

    for (x, y, r) in circles:
        print(f"Center: {x},{y}   Radius: {r}")
        # обведём найденный круг
        cv2.circle(image_output, (x, y), r, (0, 255, 0), 1)
        # и ткнём точку в центр
        cv2.circle(image_output, (x, y), 2, (255, 0 , 255), -1)

    cv2.imshow("The result", image_output)
    cv2.waitKey(0)

Сама картинка введите сюда описание изображения


Ответы (1 шт):

Автор решения: barsik34566

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

Получите массив XY координаты пикселя, значение баллы совпадения с окружностью.

→ Ссылка