find_circles.py

# Este trabalho está licenciado sob a licença MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Todos os direitos reservados.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Exemplo de Detecção de Círculos
#
# Este exemplo mostra como encontrar círculos na imagem usando a Transformada
# de Hough. https://en.wikipedia.org/wiki/Circle_Hough_Transform
#
# Note que o método find_circles() só encontra círculos que estejam completamente
# dentro da imagem. Círculos que saem da imagem/roi são ignorados...

import csi
import time

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)  # escala de cinza é mais rápido
csi0.framesize(csi.QQVGA)
csi0.snapshot(time=2000)

clock = time.clock()

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

    # Objetos de círculo têm quatro valores: x, y, r (raio) e magnitude. A
    # magnitude é a força da detecção do círculo. Quanto maior for,
    # melhor...

    # `threshold` controla quantos círculos são encontrados. Aumente o valor
    # para diminuir o número de círculos detectados...

    # `x_margin`, `y_margin` e `r_margin` controlam a mesclagem de círculos
    # semelhantes nas direções x, y e r (raio).

    # r_min, r_max e r_step controlam quais raios de círculo são testados.
    # Reduzir o número de raios de círculo testados gera um grande ganho de desempenho.

    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 ""