Files
appRobotWebcam/setup/README.md
2026-06-10 07:51:34 +02:00

80 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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. 1520 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 cam0cam2"
```
---
## 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'])"
```