Bei jedem Raspberry Pi Modell kannst du eine Kamera anschließen. Dazu dient der CSI Connector auf dem Board. In diesem Blog möchte ich dir die Raspberry Pi Kamera etwas näher bringen.
Material
Ich habe zwei Testaufbauten im Einsatz.
Im ersten benutze ich einen Raspberry Pi Zero 2W mit der Raspberry Pi HQ Kamera und dem 16mm Teleobjektiv mit C-Mount und einen Raspberry Pi 4B mit dem Raspberry Pi Camera Module 3.
Im zweiten Aufbau kommt ein Raspberry Pi 4B mit dem Raspberry Pi Camera Module 3 zum Einsatz.
Camera Module 3
Das Camera Module 3 hat eine Auflösung von 4608 * 2592 Pixeln, was 12 Megapixeln entspricht. An der Platine ist ein ca. 200mm langes FPC Kabel angebracht, dass für den CSI Konnektor des Raspberry Pi 4 gedacht ist. Unter der Linse arbeitet ein Sony IMX708 Sensor mit einer Pixelgröße von 1.4μm * 1.4μm. Das Modul besitzt einen Autofokus und einen Infrarot Sperrfilter, ist für Nachtaufnahmen also eher schlecht geeignet. Es gibt aber Modelle ohne diesen Sperrfilter.
Raspberry Pi HQ Camera
Die Platine der HQ Camera sitzt hinter einem Adapter mit C-Mount, auf das verschiedene Objektive montiert werden können. Zusätzlich ist die Befestigung auf ein 1/4″ Gewinde vorgesehen. Diese Kamera löst mir seinem hintergrundbeleuchteten Sony IMX477R Sensor auf 12,3 Megapixel auf. Die Pixelgröße beträgt 1.55μm * 1.55μm. Auch dieses Modell besitzt einen Infrarot Sperrfilter, den du allerdings deaktivieren kannst. Ich habe bei meinem Modell das vormontierte Kabel für den Raspberry Pi 4 entfernt und gegen eins für den Raspberry Pi Zero ersetzt.
Montage
Die Montage ist für beide Aufbauten ziemlich ähnlich. Du nimmst die Sperre des CSI Konnektors zwischen zwei Finger und ziehst ihn vorsichtig und mit viel Gefühl nach oben. Beim Zero 2W ist das etwas schwieriger, da der Anschluss flach liegt.
Das FPC hat am Ende eine isolierte Seite und eine, bei der die Kabel blank liegen. Beim Raspberry Pi 4 muss die isolierte Seite zu den USB Ports zeigen, beim Raspberry Pi Zero 2W zeigt die Isolierung nach oben. Das Kabel schiebst du vorsichtig, flach, ohne Verkantung in den CSI. Danach drückst du die Sperre wieder an ihren ursprünglichen Platz.
Ich habe die HQ Kamera auf ein kleines Dreibein Stativ geschraubt. Das Module 3 wird von einer Klemme meiner Löthilfe gehalten.
Konfiguration
Bei Raspberry Pi OS bullseye muss die CSI Schnittstelle noch über die raspi-config
manuell aktiviert werden. Beim bookworm Release ist diese Option entfallen, da das Kamera Interface immer eingeschaltet ist.Du findest dies im Untermenü Interface Options.
Nach der Auswahl des Menüpunkts, erscheint diese Sicherheitsabfrage
Nach der Bestätigung mit Yes ist das CSI aktiv.
Wichtig ist nur, dass in der /boot/firmware/config.txt folgender Eintrag vorhanden ist:
camera_auto_detect=1
Foto aufnehmen
Die Software, um ein Foto mit der Kamera aufzunehmen, ist bei Raspberry Pi OS meist schon mit installiert, das Kommando ist raspistill (bullseye) oder libcamera-still (bookworm)
Um ein Foto aufzunehmen gibst du einfach
raspistill -o test.jpeg
oder
libcamera-still -o test.jpg
ein. Das Kommando findet die angeschlossene Kamera selbstständig und liest die RAW Bilddaten aus und speichert sie als JPG ab.
Zum Testen habe ich auf meiner Fensterbank auf dem Balkon eine kleine Szene aufgebaut, die Schärfe und Farbqualität repräsentieren kann. Da meine Testbilder bei Aussenlicht gemacht wurden, kann die Helligkeit unter Umständen schwanken.
Etwas Bewegung
Natürlich kannst du mit der Kamera auch Videos aufnehmen. Dazu benötigst du zwei Kommandos: libcamera-vid
für die Aufnahme und mkvmerge
zur Umrechnung in eine abspielbare Videodatei.Das Tool ffmpeg kann beim Umgang mit Videodateien sehr nützlich sein:
sudo apt install ffmpeg -y
libcamera-vid -o test.h264 --save-pts timestamps.txt -t 12000 &&
mkvmerge -o test.mkv --timecodes 0:timestamps.txt test.h264 &&
ffmpeg -i test.mkv -codec copy test.mp4
Mit libcamera-vid werden die Bilddaten in die Datei test.h264
geschrieben und eine Datei mit den Timestamps unter timestamps.txt
erzeugt, die Aufnahme soll 12 Sekunden dauern (-t 12000
) . Dies ist noch kein abspielbarer Videoclip, daher wandeln wir mit Hilfe von mkvmerge die Bilddaten mit Hilfe der Timestamps in das Matroska Containerformat um. Vom .mkv Format wandele ich die Datei mit ffmpeg in ein MP4 File um.Dabei kommt dann folgendes bei mir eine 3,1MB große Videodatei heraus. Bei Videoaufnahmen solltest du auf genügend freien Speicherplatz auf dem Datenträger achten!
kurzes Beispielvideo mit dem Camera Module 3
No Marty was harmed for the production of this motion picture!
Zeitraffer
Zeitraffer (timelapse) verdichtet einen langen Zeitraum zu einem kurzen Video. Auch dies lässt sich mit der Raspberry Pi Kamera sehr einfach machen. Dabei werden pro Filmsekunde weniger Bilder als üblich angezeigt. Dadurch lassen sich Prozesse, die für das menschliche Auge zu langsam ablaufen (z.B. das Wachstum von Pflanzen), sichtbar machen. Für ein timelapse Video musst du einfach nur eine Serie von Fotos im gleichen Zeitabstand speichern, die danach in einer passenden Bildrate zu einem Film zusammengesetzt werden.Zur Demonstration habe ich den Aufbau mit dem Camera Module 3 auf die Fensterbank vor meinem Küchenfenster und in Blickrichtung auf den Garten ausgerichtet. Ich will Sonnenuntergang am 02.03.24 und den Sonnenaufgang am 04.03.24 im Zeitraffer aufzeichnen. Die Aufzeichnung beginnt eine Stunde vor Sonnenuntergang bzw. -aufgang und soll drei Stunden lang alle zwei Minuten ein Foto aufnehmen. Dazu richte ich zwei Cronjobs ein
crontab -e
In die Crontab trage ich zwei Zeilen ein
# m h dom mon dow command
00 18 2 3 * cd /tank/cameratests/pedro/timelapse/dusk && libcamera-still -t 10800000 --timelapse 120000 -o dusk\%04d.jpg
20 6 4 3 * cd /tank/cameratests/pedro/timelapse/dawn && libcamera-still -t 10800000 --timelapse 120000 -o dawn\%04d.jpg
Da dabei größere Datenmengen anfallen, werden die Bilder auf meinem NAS gespeichert. Du bemerkst die beiden Parameter des libcamera-still Kommandos. -t
sagt ihm, wie lang die Aufnahme dauern soll. Dies sind 180min *60 *1000 Millisekunden, also drei komplette Stunden. Mit --timelapse
wird in Millisekunden angegeben, in welchem Intervall ein Foto gespeichert werden soll.
Der Dateiname sieht etwas merkwürdig aus. Mit dem Platzhalter %04d
weiß libcamera-still
, dass es den aktuellen Bildzähler als vierstellige Dezimalzahl einsetzen soll. Da das Prozentzeichen in der Crontab eine spezielle Bedeutung hat, muss es mit einem Backslash escaped werden.
Die Einzelbilder müssen dann noch zu einem MP4 Video zusammengefügt werden.Im Verzeichnis mit den Einlaufnahmen führe ich jetzt folgendes Kommando aus:
ffmpeg -r 5 -f image2 -pattern_type glob -i 'dusk*.jpg' -s 1280x720 -vcodec libx264 dusk.mp4
Damit werden alle Bilddateien, auf deren Namen das Muster dusk*.jpg zutrifft hintereinander zu einem MP4 Video dusk.mp4 zusammengebaut. Da die Bilder konsekutiv benannt sind, werden sie auch automatisch in die richtige Reihenfolge gebracht. Der Parameter -r 5
bestimmt die Bildrate des Videos. Die Fotos über drei Stunden ergeben so einen 17-sekündigen Clip.
timelapse Video vom Sonnenuntergang
von hell zu dunkel
Mit den Bilddaten vom Sonnenaufgang verfahre ich ganz ähnlich wie oben.
ffmpeg -r 5 -f image2 -pattern_type glob -i 'dawn*.jpg' -s 1280x720 -vcodec libx264 dawn.mp4
timelapse vom Sonnenaufgang
von dunkel zu hell
Fazit
Mit einer Raspberry Pi Kamera kannst du interessante Dinge machen. Du musst aber immer auf die Persönlichkeitsrechte deiner Mitmenschen achten. Du darfst die Kamera nicht auf den öffentlichen Raum richten, dass schließt das Treppenhaus in deinem Haus ein. Ohne Erlaubnis der abgelichteten Personen darfst du diese nicht fotografieren! Sobald personenbezogene Informationen wie Gesicht oder KFZ-Kennzeichen zu sehen sind, verletzt du das Recht auf informationelle Selbstbestimmung.
Ich möchte die Qualität der beiden Kameras nicht gegenüberstellen, da mir dazu die korrekten Laborbedingungen fehlen. Ich muss dem Camera Module 3 allerdings eine gute Farbtreue attestieren, der Autofocus hat allerdings bei schlechten Lichtverhältnissen gelegentlich Probleme mit der Tiefenschärfe.
Die HQ Kamera ist sehr flexibel durch die wechselbaren Objektive. Allerdings musst du die Schärfe selber einstellen, was ohne Vorschau Display schwierig ist.
Mit dem Zeitraffer der Raspberry Pi Kamera zu spielen, war eine interessante Erfahrung.
Update 08.03.2024 Videokodierung in MP4