track_positions/counted_ids wuchsen im 24/7-Betrieb unbegrenzt: -> Speicherleck/Slowdown -> Bildrate bricht ein -> Linienueberquerungen werden nicht mehr erfasst (Einzel-Erkennung lief weiter). - Track-IDs altern jetzt (last-seen-Frame) und werden nach COUNT_FORGET_FRAMES aus track_positions UND counted_ids entfernt - bounded State -> kein Leck; loest auch Unterdrueckung bei spaeterer Track-ID-Wiederverwendung - Langzeit-Simulation (5000 Frames): 100/100 gezaehlt, State-Peak 4 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
56 lines
2.6 KiB
Plaintext
56 lines
2.6 KiB
Plaintext
# ===========================================================================
|
|
# Beispiel-Konfiguration fuer den Vehicle-Counter
|
|
# ---------------------------------------------------------------------------
|
|
# 1. Diese Datei nach ".env" kopieren: cp .env.example .env
|
|
# 2. Werte an die eigene Umgebung anpassen.
|
|
# Die .env wird beim Start automatisch geladen (python-dotenv) und ist per
|
|
# .gitignore vom Repository ausgeschlossen.
|
|
# ===========================================================================
|
|
|
|
# --- Kamera / Livestream ---------------------------------------------------
|
|
# MJPEG-Stream der ESP32-CAM (oder einer anderen HTTP-Stream-Quelle).
|
|
export CAMERA_URL="http://CAMERA-IP:81/stream"
|
|
# Frei waehlbare Kennung der Kamera (taucht in den MQTT-Events auf).
|
|
export CAMERA_ID="meine-kamera"
|
|
|
|
# --- Inferenz-Tuning -------------------------------------------------------
|
|
# Modell fuer den Webcam-/Livestream-Pfad (Nano = schnell).
|
|
export WEBCAM_MODEL="yolo11n.pt"
|
|
# Eingabegroesse fuer YOLO. Kleiner = schneller, groesser = genauer.
|
|
export YOLO_IMGSZ=480
|
|
# Motion-Gate: ab so vielen veraenderten Pixeln laeuft YOLO ueberhaupt.
|
|
export MOTION_PIXELS=500
|
|
# 24/7-Zaehlung auch ohne Zuschauer: 1 = an, 0 = nur bei aktivem Viewer.
|
|
export GRABBER_ALWAYS_ON=0
|
|
# FP16-Inferenz. Leer lassen = automatisch (an bei CUDA-GPU, sonst aus).
|
|
#export YOLO_HALF=1
|
|
# Zaehl-Band um die Linie (Pixel): faengt schnelle Fahrzeuge ab, die zwischen
|
|
# zwei Frames weit springen. 0 = aus (nur klassischer Linien-Schnitt).
|
|
export COUNT_BAND_PX=45
|
|
# Entprellung gegen Doppelzaehlung bei Track-ID-Wechseln (Pixel-Radius / Frames).
|
|
export COUNT_DEDUP_PX=60
|
|
export COUNT_DEDUP_FRAMES=12
|
|
# 24/7-Betrieb: Track-IDs nach so vielen Frames ohne Sichtung vergessen
|
|
# (verhindert Speicherleck / "Zaehlen verhungert nach Stunden").
|
|
export COUNT_FORGET_FRAMES=150
|
|
|
|
# --- MQTT (optional) -------------------------------------------------------
|
|
# Komplett abschaltbar: "false" -> App laeuft ohne Broker, sendet keine Events.
|
|
export MQTT_ENABLED="true"
|
|
# Adresse + Port des MQTT-Brokers (z. B. Mosquitto).
|
|
export MQTT_HOST="127.0.0.1"
|
|
export MQTT_PORT=1883
|
|
# Zugangsdaten nur setzen, wenn der Broker Authentifizierung verlangt.
|
|
#export MQTT_USER="user"
|
|
#export MQTT_PASS="passwort"
|
|
# Basis-Topic. Events laufen auf <TOPIC>/crossing, Status auf <TOPIC>/status.
|
|
export MQTT_TOPIC="vehiclecounter/meine-kamera"
|
|
|
|
# --- Sonstiges -------------------------------------------------------------
|
|
# Zeitzone fuer die Zeitstempel der Events.
|
|
export TZ_NAME="Europe/Berlin"
|
|
# Flask-Secret. Fuer den Produktivbetrieb unbedingt aendern!
|
|
export SECRET_KEY="bitte-aendern"
|
|
# Speicherort der persistierten Zaehllinie.
|
|
export LINE_FILE="counting_line.json"
|