find_line_segments.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 Segmentos de Linha
#
# Este exemplo mostra como encontrar segmentos de linha na imagem. Para cada objeto de linha
# encontrada na imagem, é retornado um objeto de linha que inclui a rotação da linha.

# find_line_segments() encontra linhas de comprimento finito (mas é lento).
# Use find_line_segments() para encontrar linhas não infinitas (e é rápido).

import csi
import time

ENABLE_LENS_CORR = False  # ative para linhas mais retas...

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()

# Todas as linhas também têm atributos `x1`, `y1`, `x2` e `y2` que fornecem os pontos finais.
# Objetos de linha podem ser passados diretamente para `draw_line()`.

while True:
    clock.tick()
    img = csi0.snapshot()
    if ENABLE_LENS_CORR:
        img.lens_corr(1.8)  # para lente de 2.8mm...

    # `merge_distance` controla a mesclagem de linhas próximas. Em 0 (padrão), nenhuma
    # mesclagem é feita. Em 1, qualquer linha a 1 pixel de outra é mesclada... e assim
    # por diante conforme você aumenta esse valor. Pode ser interessante mesclar linhas, pois a detecção
    # de segmentos de linha produz muitos resultados de segmentos.

    # `max_theta_diff` controla a diferença máxima de rotação entre
    # quaisquer duas linhas prestes a serem mescladas. O padrão permite 15 graus.

    for l in img.find_line_segments(merge_distance=0, max_theta_diff=5):
        img.draw_line(l, color=(255, 0, 0))
        # print(l)

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

results matching ""

    No results matching ""