find_line_segments.py

# Questo lavoro è concesso in licenza MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Tutti i diritti riservati.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Esempio di ricerca dei segmenti di linea
#
# Questo esempio mostra come trovare i segmenti di linea nell'immagine. Per ogni oggetto linea
# trovato nell'immagine viene restituito un oggetto linea che include la rotazione della linea.

# find_line_segments() trova linee di lunghezza finita (ma è lento).
# Usare find_line_segments() per trovare linee non infinite (ed è veloce).

import csi
import time

ENABLE_LENS_CORR = False  # attivare per linee più dritte...

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)  # la scala di grigi è più veloce
csi0.framesize(csi.QQVGA)
csi0.snapshot(time=2000)

clock = time.clock()

# Tutte le linee hanno anche gli attributi `x1`, `y1`, `x2` e `y2` per ottenere i loro punti finali.
# Gli oggetti linea possono essere passati direttamente a `draw_line()`.

while True:
    clock.tick()
    img = csi0.snapshot()
    if ENABLE_LENS_CORR:
        img.lens_corr(1.8)  # per obiettivo da 2,8 mm...

    # `merge_distance` controlla l'unione delle linee vicine. A 0 (valore predefinito), non
    # viene eseguita alcuna unione. A 1, qualsiasi linea distante 1 pixel da un'altra viene unita... e così
    # via man mano che si aumenta questo valore. Potrebbe essere utile unire le linee poiché il rilevamento dei segmenti
    # di linea produce molti risultati di segmenti di linea.

    # `max_theta_diff` controlla la differenza massima di rotazione tra
    # due linee che stanno per essere unite. L'impostazione predefinita consente 15 gradi.

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