API mit .npz
This commit is contained in:
79
setup/README.md
Normal file
79
setup/README.md
Normal file
@@ -0,0 +1,79 @@
|
||||
# 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'])"
|
||||
```
|
||||
Reference in New Issue
Block a user