find_circles.py

# Эта работа лицензирована по лицензии MIT.
# Copyright (c) 2013-2023 OpenMV LLC. All rights reserved.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Пример поиска окружностей
#
# Этот пример демонстрирует, как находить окружности на изображении с помощью
# преобразования Хафа. https://en.wikipedia.org/wiki/Circle_Hough_Transform
#
# Обратите внимание, что метод find_circles() найдёт только окружности, которые полностью
# находятся внутри изображения. Окружности, выходящие за пределы изображения/ROI, игнорируются...

import csi
import time

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)  # градации серого работают быстрее
csi0.framesize(csi.QQVGA)
csi0.snapshot(time=2000)

clock = time.clock()

while True:
    clock.tick()
    img = csi0.snapshot().lens_corr(1.8)

    # Объекты окружностей имеют четыре значения: x, y, r (радиус) и magnitude.
    # Magnitude — это сила обнаружения окружности. Чем выше значение, тем
    # лучше...

    # `threshold` управляет количеством найденных окружностей. Увеличьте это значение,
    # чтобы уменьшить количество обнаруживаемых окружностей...

    # `x_margin`, `y_margin` и `r_margin` управляют объединением похожих
    # окружностей по направлениям x, y и r (радиус).

    # r_min, r_max и r_step управляют тем, какие радиусы окружностей проверяются.
    # Уменьшение количества проверяемых радиусов окружностей даёт значительный прирост производительности.

    for c in img.find_circles(
        threshold=2000,
        x_margin=10,
        y_margin=10,
        r_margin=10,
        r_min=2,
        r_max=100,
        r_step=2,
    ):
        img.draw_circle(c, color=(255, 0, 0))
        print(c)

    print("FPS %f" % clock.fps())

results matching ""

    No results matching ""