# Kamera-Kalibrierung einrichten Jede Kamera braucht eine Kalibrierungsdatei (`calibration.npz`), die Kameramatrix und Verzerrungskoeffizienten enthält. Die Datei wird beim Serverstart einmalig in den RAM geladen und über `GET /api/cameras/{id}/calibration` ausgeliefert. --- ## Voraussetzungen ``` pip install opencv-python numpy requests ``` --- ## Schritt 1 – Schachbrettmuster drucken Datei: [`checkerboard_11x8_25mm.pdf`](checkerboard_11x8_25mm.pdf) - **A4 Querformat, 100 % drucken** (keine Skalierung, kein „An Seite anpassen") - Muster: 11 × 8 Felder → **10 × 7 innere Ecken**, 25 mm pro Feld - Auf festes Papier oder Karton drucken; flach und verwindungssteif halten --- ## Schritt 2 – Fotos aufnehmen Server läuft auf `thinkcentre.local:8444`. Skript schießt für alle Kameras gleichzeitig Hires-Aufnahmen und legt sie in `test/files/{camId}/` ab: ```bash python test/grabSnapShot.py ``` Das Schachbrettmuster dabei aus **verschiedenen Winkeln und Positionen** halten (mind. 15–20 Aufnahmen pro Kamera). Bilder landen unter `test/files/cam0/`, `test/files/cam1/`, `test/files/cam2/`. --- ## Schritt 3 – Kalibrierung berechnen Für jede Kamera einmal ausführen: ```bash python setup/calibrate.py test/files/cam0 data/calibration/cam0/calibration.npz python setup/calibrate.py test/files/cam1 data/calibration/cam1/calibration.npz python setup/calibrate.py test/files/cam2 data/calibration/cam2/calibration.npz ``` Ein guter RMS-Wert liegt unter **0.5 px**. Wenn der Wert zu hoch ist: - Bilder mit schlechter Beleuchtung oder Bewegungsunschärfe löschen - Schachbrettmuster flacher halten - Mehr Aufnahmen aus verschiedenen Winkeln machen --- ## Schritt 4 – Dateien committen Die `.npz`-Dateien sind Deployment-Konfiguration und gehören ins Repository: ```bash git add data/calibration/ git commit -m "Kalibrierungsdaten für cam0–cam2" ``` --- ## Ergebnis prüfen ```bash curl http://thinkcentre.local:8444/api/cameras # → jede Kamera mit "calibrationUrl": "/api/cameras/cam0/calibration" curl -o cam0.npz http://thinkcentre.local:8444/api/cameras/cam0/calibration python -c "import numpy as np; d=np.load('cam0.npz'); print(d['camera_matrix'])" ```