Files
vehicle-counter/README.md
Joachim Hummel 504f8c0b69 Implementiere Fahrzeugzählung mit Linienüberquerung
- Linienschnitt-Algorithmus für präzise Fahrzeugzählung
- Interaktive Linienauswahl im Browser (Canvas-basiert)
- Session-Management für benutzerdefinierte Zähllinien
- Typ-spezifische Zähler (Autos, LKW, Busse, Motorräder)
- REST-API für Linienkonfiguration und Zähler-Reset
- Gestrichelte Zähllinie als Video-Overlay
- Detailliertes Zähler-Display im Video

Features:
- Linienüberquerung-Erkennung (beide Richtungen)
- Keine Mehrfachzählung durch Track-ID-Management
- Funktioniert für Webcam und Video-Upload
- Benutzerfreundliche UI mit Echtzeit-Feedback

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-08 14:42:46 +00:00

4.0 KiB

Fahrzeug- und Objekt-Erkennungssystem

Eine webbasierte Anwendung zur Echtzeit-Objekterkennung und -Verfolgung mittels YOLOv11. Die Anwendung unterstützt sowohl Live-Webcam-Streams als auch die Verarbeitung hochgeladener Videodateien.

Funktionen

  • Webcam-Erkennung: Echtzeit-Objekterkennung über die Webcam
  • Video-Upload: Hochladen und Verarbeiten von Videodateien mit Objekterkennung
  • Objekt-Tracking: Persistente Verfolgung von Objekten mit eindeutigen IDs über Frames hinweg
  • Visuelle Markierungen: Bounding Boxes und Labels für erkannte Objekte
  • Browser-basiert: Einfacher Zugriff über den Webbrowser

Voraussetzungen

  • Python 3.12 oder höher
  • Webcam (für Live-Erkennung)
  • YOLO-Modell (yolo11s.pt) im Hauptverzeichnis

Installation

  1. Repository klonen oder herunterladen

  2. Erforderliche Python-Pakete installieren:

pip3 install flask opencv-python numpy ultralytics
  1. Sicherstellen, dass die Modelldatei yolo11s.pt im Hauptverzeichnis vorhanden ist

Verwendung

Anwendung starten

python3 app.py

Die Anwendung ist dann unter http://localhost:8080 erreichbar.

Webcam-Erkennung

  1. Öffnen Sie http://localhost:8080 im Browser
  2. Klicken Sie auf "Start Webcam Detection"
  3. Die Webcam wird aktiviert und Objekte werden in Echtzeit erkannt und markiert
  4. Jedes Objekt erhält eine Track-ID und Klassenbeschriftung

Video-Upload

  1. Öffnen Sie http://localhost:8080 im Browser
  2. Wählen Sie eine Videodatei über das Upload-Formular aus
  3. Klicken Sie auf "Upload Video"
  4. Das Video wird verarbeitet und mit Objekterkennungen angezeigt

Projektstruktur

.
├── app.py                    # Haupt-Flask-Anwendung
├── yolo11s.pt               # YOLOv11-Modell (erforderlich)
├── templates/               # HTML-Templates
│   ├── index.html          # Startseite
│   ├── webcam.html         # Webcam-Anzeige
│   └── play_video.html     # Video-Wiedergabe
├── uploads/                # Hochgeladene Videos (automatisch erstellt)
└── highway1.mp4            # Beispielvideo

Technische Details

Verwendete Technologien

  • Flask: Web-Framework für Routing und Template-Rendering
  • OpenCV: Videobearbeitung und Frame-Manipulation
  • Ultralytics YOLO: YOLOv11-Modell für Objekterkennung und Tracking
  • NumPy: Array-Operationen für Bilddaten

Verarbeitungs-Pipeline

  1. Frame-Erfassung: Webcam oder Videodatei als Quelle
  2. Frame-Skipping: Verarbeitung jedes 2. Frames zur Leistungsoptimierung
  3. Größenanpassung: Alle Frames werden auf 1020x600 Pixel skaliert
  4. YOLO-Tracking: Objekterkennung mit persistenten Track-IDs
  5. Annotation: Zeichnen von Bounding Boxes und Labels
  6. Streaming: Übertragung als MJPEG-Stream an den Browser

Objekterkennung

  • Erkennt verschiedene Objektklassen (abhängig vom YOLO-Modell)
  • Vergibt eindeutige Track-IDs für jedes Objekt
  • Beschriftung im Format: {Track-ID} - {Klassenname}
  • Grüne Bounding Boxes um erkannte Objekte
  • Magenta-farbene Textbeschriftungen

Leistungsoptimierung

  • Frame-Skipping: Nur jeder 2. Frame wird verarbeitet, um CPU-Last zu reduzieren
  • Feste Auflösung: Einheitliche Größe von 1020x600 Pixel für alle Frames
  • Effizientes Streaming: JPEG-Kompression für Frame-Übertragung

Einschränkungen

  • Keine Validierung der Upload-Dateigröße
  • Keine automatische Bereinigung hochgeladener Dateien
  • Feste Frame-Dimensionen (1020x600)
  • Keine Fehlerbehandlung bei Webcam-Zugriffsproblemen

Hinweise

  • Bei der ersten Verwendung kann das Laden des YOLO-Modells einige Sekunden dauern
  • Die Erkennungsgenauigkeit hängt vom verwendeten YOLO-Modell ab
  • Frame-Skipping kann bei sehr schnell bewegten Objekten zu Erkennungslücken führen
  • Hochgeladene Videos werden im Ordner uploads/ gespeichert und müssen manuell gelöscht werden

Lizenz

Projekt basiert auf Ressourcen von Pyresearch