Zum Inhalt springen

Entfernungsberechnung mit Ultralytics YOLOv8

Was ist eine Entfernungsberechnung?

Das Messen des Abstands zwischen zwei Objekten ist als Abstandsberechnung innerhalb eines bestimmten Raums bekannt. Im Fall von Ultralytics YOLOv8wird der Schwerpunkt des Begrenzungsrahmens verwendet, um den Abstand fĂŒr die vom Benutzer markierten Begrenzungsrahmen zu berechnen.



Pass auf: Entfernungsberechnung mit Ultralytics YOLOv8

Bildmaterial

Entfernungsberechnung mit Ultralytics YOLOv8
Ultralytics YOLOv8 Berechnung der Entfernung

Vorteile der Entfernungsberechnung?

  • LokalisierungsprĂ€zision: Verbessert die genaue rĂ€umliche Positionierung bei Computer Vision Aufgaben.
  • GrĂ¶ĂŸenabschĂ€tzung: Ermöglicht die SchĂ€tzung von physischen GrĂ¶ĂŸen fĂŒr ein besseres kontextuelles VerstĂ€ndnis.
  • Scene Understanding: TrĂ€gt zu einem 3D-VerstĂ€ndnis der Umgebung bei, um bessere Entscheidungen zu treffen.
Berechnung der Entfernung
  • Klicke mit der linken Maustaste auf zwei beliebige Bounding Boxes, um den Abstand zu berechnen

Entfernungsberechnung mit YOLOv8 Beispiel

import cv2

from ultralytics import YOLO, solutions

model = YOLO("yolov8n.pt")
names = model.model.names

cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

# Video writer
video_writer = cv2.VideoWriter("distance_calculation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init distance-calculation obj
dist_obj = solutions.DistanceCalculation(names=names, view_img=True)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    tracks = model.track(im0, persist=True, show=False)
    im0 = dist_obj.start_process(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
Hinweis
  • Maus-Rechtsklick löscht alle gezeichneten Punkte
  • Maus-Linksklick kann zum Zeichnen von Punkten verwendet werden

Argumente DistanceCalculation()

Name Type Default Beschreibung
names dict None Wörterbuch der Klassennamen.
pixels_per_meter int 10 Umrechnungsfaktor von Pixeln in Meter.
view_img bool False Flagge, die angibt, ob der Videostream angezeigt werden soll.
line_thickness int 2 Dicke der auf dem Bild gezeichneten Linien.
line_color tuple (255, 255, 0) Farbe der auf dem Bild gezeichneten Linien (BGR-Format).
centroid_color tuple (255, 0, 255) Farbe der gezeichneten Zentren (BGR-Format).

Argumente model.track

Name Typ Standard Beschreibung
source im0 None Quellverzeichnis fĂŒr Bilder oder Videos
persist bool False Spuren zwischen Frames beibehalten
tracker str botsort.yaml Tracking-Methode 'bytetrack' oder 'botsort'
conf float 0.3 Konfidenzschwelle
iou float 0.5 IOU-Schwelle
classes list None Ergebnisse nach Klassen filtern, d.h. classes=0, oder classes=[0,2,3]
verbose bool True Anzeige der Ergebnisse der Objektverfolgung

FAQ

Wie berechne ich Entfernungen zwischen Objekten mit Ultralytics YOLOv8 ?

So berechnen Sie Entfernungen zwischen Objekten mit Ultralytics YOLOv8musst du die Mittelpunkte der Boundingboxen der erkannten Objekte bestimmen. Dieser Prozess beinhaltet die Initialisierung der DistanceCalculation Klasse von Ultralytics' solutions Modul und nutzt die Tracking-Ausgaben des Modells, um die Entfernungen zu berechnen. Du kannst dir die Implementierung in der Beispiel fĂŒr die Berechnung der Entfernung.

Was sind die Vorteile der Entfernungsberechnung mit Ultralytics YOLOv8 ?

Die Entfernungsberechnung mit Ultralytics YOLOv8 bietet mehrere Vorteile:

  • LokalisierungsprĂ€zision: Ermöglicht die genaue rĂ€umliche Positionierung von Objekten.
  • GrĂ¶ĂŸeneinschĂ€tzung: Hilft bei der EinschĂ€tzung der physischen GrĂ¶ĂŸe und trĂ€gt so zu einem besseren VerstĂ€ndnis des Kontextes bei.
  • Scene Understanding: Verbessert das 3D-SzenenverstĂ€ndnis und hilft bei der Entscheidungsfindung in Anwendungen wie autonomes Fahren und Überwachung.

Kann ich eine Entfernungsberechnung in Echtzeit-Videostreams mit Ultralytics YOLOv8 durchfĂŒhren?

Ja, du kannst Entfernungsberechnungen in Echtzeit-Videostreams mit Ultralytics YOLOv8 durchfĂŒhren. Dazu werden Videobilder mit OpenCV erfasst, die YOLOv8 Objekterkennung ausgefĂŒhrt und die DistanceCalculation Klasse, um Entfernungen zwischen Objekten in aufeinanderfolgenden Bildern zu berechnen. FĂŒr eine detaillierte Implementierung siehe die Beispiel fĂŒr einen Videostream.

Wie lösche ich Punkte, die wÀhrend der Entfernungsberechnung mit Ultralytics YOLOv8 gezeichnet wurden?

Um Punkte zu löschen, die wĂ€hrend der Entfernungsberechnung mit Ultralytics YOLOv8 eingezeichnet wurden, kannst du einen rechten Mausklick machen. Diese Aktion löscht alle Punkte, die du gezeichnet hast. Weitere Informationen findest du im Abschnitt "Hinweise" unter dem Beispiel fĂŒr die Abstandsberechnung.

Was sind die wichtigsten Argumente fĂŒr die Initialisierung der Klasse DistanceCalculation in Ultralytics YOLOv8 ?

Die wichtigsten Argumente fĂŒr die Initialisierung der DistanceCalculation Klasse in Ultralytics YOLOv8 enthalten:

  • names: Wörterbuch, das Klassenindizes auf Klassennamen abbildet.
  • pixels_per_meter: Umrechnungsfaktor von Pixeln in Meter.
  • view_img: Flagge, die anzeigt, ob der Videostream angezeigt werden soll.
  • line_thickness: Dicke der auf dem Bild gezeichneten Linien.
  • line_color: Farbe der auf dem Bild gezeichneten Linien (BGR-Format).
  • centroid_color: Farbe der Zentroide (BGR-Format).

Eine vollstÀndige Liste und die Standardwerte findest du in den Argumenten von DistanceCalculation.



Erstellt am 2024-01-05, Aktualisiert am 2024-07-14
Autoren: RizwanMunawar (5), glenn-jocher (7), IvorZhu331 (1), AyushExel (1)

Kommentare