find_rects.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 Retângulos
#
# Este exemplo mostra como encontrar retângulos na imagem usando o código de detecção por
# limiar de quadriláteros do nosso código de April Tags. O algoritmo de detecção por limiar de quadriláteros
# detecta retângulos de forma extremamente robusta e é muito melhor do que métodos baseados na
# Transformada de Hough. Por exemplo, ele ainda consegue detectar retângulos mesmo quando a distorção
# de lente faz com que esses retângulos pareçam tortos. Retângulos arredondados não são problema!
# (Mas, dado isso, o código também detecta círculos de raio pequeno)...

import csi
import time

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)  # escala de cinza é mais rápido (máximo de 160x120 na OpenMV-M7)
csi0.framesize(csi.QQVGA)
csi0.snapshot(time=2000)

clock = time.clock()

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

    # `threshold` abaixo deve ser definido com um valor alto o suficiente para filtrar retângulos
    # detectados na imagem que tenham baixa magnitude de borda por ruído. Retângulos
    # têm magnitudes de borda maiores quanto maiores e mais contrastantes forem...

    for r in img.find_rects(threshold=10000):
        img.draw_rectangle(r, color=(255, 0, 0))
        for p in r.corners:
            img.draw_circle((p[0], p[1], 5), color=(0, 255, 0))
        print(r)

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

results matching ""

    No results matching ""