Parkraummanagement mit Ultralytics YOLOv8 🚀
Was ist ein Parkmanagementsystem?
Parkraummanagement mit Ultralytics YOLOv8 sorgt für effizientes und sicheres Parken, indem es Plätze organisiert und die Verfügbarkeit überwacht. YOLOv8 kann die Parkplatzverwaltung durch Fahrzeugerkennung in Echtzeit und Einblicke in die Parkbelegung verbessern.
Vorteile eines Parkmanagementsystems?
- Effizienz: Die Parkraumbewirtschaftung optimiert die Nutzung der Parkplätze und reduziert Staus.
- Sicherheit und Schutz: Die Parkraumbewirtschaftung mit YOLOv8 verbessert die Sicherheit von Menschen und Fahrzeugen durch Überwachungs- und Sicherheitsmaßnahmen.
- Geringere Emissionen: Die Parkraumbewirtschaftung mit YOLOv8 steuert den Verkehrsfluss, um Leerlaufzeiten und Emissionen auf Parkplätzen zu minimieren.
Anwendungen in der realen Welt
Parkraum-Management-System | Parkraum-Management-System |
---|---|
Parkraumbewirtschaftung Aeriel View mit Ultralytics YOLOv8 | Parkraummanagement Draufsicht mit Ultralytics YOLOv8 |
Parking Management System Code Workflow
Auswahl der Punkte
Punktauswahl ist jetzt einfach
Die Auswahl von Parkplätzen ist eine kritische und komplexe Aufgabe in Parkraumbewirtschaftungssystemen. Ultralytics vereinfacht diesen Prozess, indem es ein Tool bereitstellt, mit dem du Parkplatzbereiche definieren kannst, die später für die weitere Bearbeitung genutzt werden können.
- Nimm ein Bild aus dem Video- oder Kamerastream auf, in dem du den Parkplatz verwalten möchtest.
- Verwende den mitgelieferten Code, um eine grafische Oberfläche zu starten, in der du ein Bild auswählen und mit einem Mausklick Parkregionen umreißen kannst, um Polygone zu erstellen.
Bildgröße
Maximale Bildgröße von 1920 * 1080 unterstützt
from ultralytics.solutions.parking_management import ParkingPtsSelection, tk
root = tk.Tk()
ParkingPtsSelection(root)
root.mainloop()
- Nachdem Sie die Parkflächen mit Polygonen definiert haben, klicken Sie auf
save
um eine JSON-Datei mit den Daten in deinem Arbeitsverzeichnis zu speichern.
Python Kodex für die Parkraumbewirtschaftung
Parkraummanagement mit YOLOv8 Beispiel
import cv2
from ultralytics.solutions.parking_management import ParkingManagement
# Path to json file, that created with above point selection app
polygon_json_path = "bounding_boxes.json"
# Video capture
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("parking management.avi",
cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h))
# Initialize parking management object
management = ParkingManagement(model_path="yolov8n.pt")
while cap.isOpened():
ret, im0 = cap.read()
if not ret:
break
json_data = management.parking_regions_extraction(polygon_json_path)
results = management.model.track(im0, persist=True, show=False)
if results[0].boxes.id is not None:
boxes = results[0].boxes.xyxy.cpu().tolist()
clss = results[0].boxes.cls.cpu().tolist()
management.process_data(json_data, im0, boxes, clss)
management.display_frames(im0)
video_writer.write(im0)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
Optionale Argumente ParkingManagement()
Name | Typ | Standard | Beschreibung |
---|---|---|---|
occupied_region_color |
RGB Color |
(0, 255, 0) |
Farbe des belegten Parkplatzes in der Region |
available_region_color |
RGB Color |
(0, 0, 255) |
Parkplatz verfügbar Region Farbe |
margin |
int |
10 |
Lücke zwischen Textanzeige für mehrere Klassen zählen |
txt_color |
RGB Color |
(255, 255, 255) |
Vordergrundfarbe für Objekt zählt Text |
bg_color |
RGB Color |
(255, 255, 255) |
Rechteck hinter Text Hintergrundfarbe |
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 |