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
from ultralytics import YOLO
from ultralytics.solutions import distance_calculation
import cv2
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 = distance_calculation.DistanceCalculation()
dist_obj.set_args(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
Optionale Argumente set_args
Name | Typ | Standard | Beschreibung |
---|---|---|---|
names |
dict |
None |
Klassen Namen |
view_img |
bool |
False |
Rahmen mit ZĂ€hlungen anzeigen |
line_thickness |
int |
2 |
Dicke der Begrenzungsrahmen erhöhen |
line_color |
RGB |
(255, 255, 0) |
Linienfarbe fĂŒr Zentroide, die auf zwei Bounding Boxes abgebildet werden |
centroid_color |
RGB |
(255, 0, 255) |
Schwerpunktfarbe fĂŒr jede Bounding Box |
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 |
Erstellt am 2024-01-05, Aktualisiert am 2024-03-01
Autoren: RizwanMunawar (5), glenn-jocher (2), AyushExel (1)