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.
  • Size Estimation: Allows estimation of object size for better contextual understanding.
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
Distance is Estimate
Distance will be an estimate and may not be fully accurate, as it is calculated using 2-dimensional data, which lacks information about the object's depth.

Argumente DistanceCalculation()

Name Type Default Beschreibung
names dict None Wörterbuch der Klassennamen.
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

Argument Typ Standard Beschreibung
source str None Specifies the source directory for images or videos. Supports file paths and URLs.
persist bool False Enables persistent tracking of objects between frames, maintaining IDs across video sequences.
tracker str botsort.yaml Specifies the tracking algorithm to use, e.g., bytetrack.yaml oder botsort.yaml.
conf float 0.3 Sets the confidence threshold for detections; lower values allow more objects to be tracked but may include false positives.
iou float 0.5 Sets the Intersection over Union (IoU) threshold for filtering overlapping detections.
classes list None Filters results by class index. For example, classes=[0, 2, 3] only tracks the specified classes.
verbose bool True Controls the display of tracking results, providing a visual output of tracked objects.

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.
  • 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.


📅 Created 8 months ago ✏ Updated 4 days ago

Kommentare