find_line_segments.py

# Dieses Werk ist unter der MIT-Lizenz lizenziert.
# Copyright (c) 2013-2023 OpenMV LLC. Alle Rechte vorbehalten.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Beispiel: Liniensegmente finden
#
# Dieses Beispiel zeigt, wie man Liniensegmente im Bild findet. Für jedes Linienobjekt
# im Bild wird ein Linienobjekt zurückgegeben, das die Rotation der Linie enthält.

# find_line_segments() findet Linien endlicher Länge (ist jedoch langsam).
# Verwenden Sie find_line_segments(), um nicht-unendliche Linien zu finden (und das schnell).

import csi
import time

ENABLE_LENS_CORR = False  # aktivieren für geradere Linien ...

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)  # Graustufen ist schneller
csi0.framesize(csi.QQVGA)
csi0.snapshot(time=2000)

clock = time.clock()

# Alle Linien besitzen außerdem die Attribute `x1`, `y1`, `x2` und `y2`, um ihre Endpunkte zu erhalten.
# Linienobjekte können direkt an `draw_line()` übergeben werden.

while True:
    clock.tick()
    img = csi0.snapshot()
    if ENABLE_LENS_CORR:
        img.lens_corr(1.8)  # für ein 2,8-mm-Objektiv ...

    # `merge_distance` steuert das Zusammenführen nahe beieinanderliegender Linien. Bei 0 (Standard) findet
    # kein Zusammenführen statt. Bei 1 wird jede Linie, die 1 Pixel von einer anderen entfernt ist, zusammengeführt ... und so
    # weiter, je höher Sie diesen Wert setzen. Es kann sinnvoll sein, Linien zusammenzuführen, da die Liniensegment-
    # erkennung eine große Anzahl an Liniensegment-Ergebnissen liefert.

    # `max_theta_diff` steuert die maximale Rotationsdifferenz zwischen
    # zwei Linien, die zusammengeführt werden sollen. Die Standardeinstellung erlaubt 15 Grad.

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