find_line_segments.py

# Ce travail est publié sous licence MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Tous droits réservés.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Exemple de détection de segments de ligne
#
# Cet exemple montre comment détecter des segments de ligne dans l'image. Pour chaque objet ligne
# trouvé dans l'image, un objet ligne est retourné, incluant la rotation de la ligne.

# find_line_segments() trouve des lignes de longueur finie (mais c'est lent).
# Utilisez find_line_segments() pour trouver des lignes non infinies (et c'est rapide).

import csi
import time

ENABLE_LENS_CORR = False  # activez pour obtenir des lignes plus droites...

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)  # les niveaux de gris sont plus rapides
csi0.framesize(csi.QQVGA)
csi0.snapshot(time=2000)

clock = time.clock()

# Toutes les lignes possèdent également des attributs `x1`, `y1`, `x2` et `y2` permettant d'obtenir leurs points d'extrémité.
# Les objets ligne peuvent être transmis directement à `draw_line()`.

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

    # `merge_distance` contrôle la fusion des lignes proches. À 0 (par défaut), aucune
    # fusion n'est effectuée. À 1, toute ligne située à 1 pixel d'une autre est fusionnée... et ainsi
    # de suite à mesure que vous augmentez cette valeur. Vous pouvez souhaiter fusionner les lignes car la détection
    # de segments de ligne produit beaucoup de résultats de segments de ligne.

    # `max_theta_diff` contrôle la différence de rotation maximale entre
    # deux lignes sur le point d'être fusionnées. Le réglage par défaut autorise 15 degrés.

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