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, das Klassenindizes auf Klassennamen abbildet.
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


Created 2024-01-05, Updated 2024-06-10
Authors: glenn-jocher (6), IvorZhu331 (1), RizwanMunawar (5), AyushExel (1)

Kommentare