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