Passe de Frigate polling à GetAiState Reolink + LPR ONNX local

- Remplace la source Frigate par l'API GetAiState de la caméra Reolink
- Capture RTSP en temps réel (~20s) quand véhicule détecté, garde la meilleure frame
- LPR avec YOLOv9 (détection plaque) + PaddleOCR v4 (lecture texte) via ONNX
- Modèles partagés avec Frigate (volume local ./models/)
- Cooldown 60s entre événements pour éviter les doublons

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
perco
2026-06-02 14:49:49 +02:00
co-authored by Claude Sonnet 4.6
parent f6422b0e7e
commit 65b74ce46d
8 changed files with 292 additions and 67 deletions
+12 -1
View File
@@ -3,11 +3,22 @@ import numpy as np
import colorsys
def extract_dominant_color_from_frame(frame: np.ndarray, bbox: dict | None = None) -> tuple[str, str]:
"""Returns (hex_color, color_name) from a BGR numpy frame."""
if frame is None:
return "#808080", "Inconnu"
return _dominant_color(frame, bbox)
def extract_dominant_color(image_path: str, bbox: dict | None = None) -> tuple[str, str]:
"""Returns (hex_color, color_name) from image, optionally cropped to bbox."""
"""Returns (hex_color, color_name) from image path, optionally cropped to bbox."""
img = cv2.imread(image_path)
if img is None:
return "#808080", "Inconnu"
return _dominant_color(img, bbox)
def _dominant_color(img: np.ndarray, bbox: dict | None = None) -> tuple[str, str]:
if bbox:
h, w = img.shape[:2]