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>
This commit is contained in:
116
README.md
Normal file
116
README.md
Normal file
@@ -0,0 +1,116 @@
|
||||
# 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:
|
||||
```bash
|
||||
pip3 install flask opencv-python numpy ultralytics
|
||||
```
|
||||
|
||||
3. Sicherstellen, dass die Modelldatei `yolo11s.pt` im Hauptverzeichnis vorhanden ist
|
||||
|
||||
## Verwendung
|
||||
|
||||
### Anwendung starten
|
||||
|
||||
```bash
|
||||
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](https://pyresearch.org/)
|
||||
Reference in New Issue
Block a user