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