Raspberry Pi Kamera-Modul: Still image capture

In diesem Arikel zeigen wir Ihnen eine ausführliche Anleitung zu den Modi und Einstellungen des Raspberry Pi Kameramoduls für die Aufnahme von Bilder.

Wir stellen hier die libcamera-still vor, mit dem wir Standbilder aufnehmen können. Sie hat viele Optionen, die die Art der Bildaufnahme, die Dateiformate und die verfügbaren Bildkodierer steuern. Einige davon werden wir in diesem Tutorial kennenlernen. Für den Moment gehen wir davon aus, dass Sie Ihre Tastatur und einen Monitor direkt an Ihren Raspberry Pi angeschlossen haben.

Erfassen von Bildern mit unterschiedlichen Auflösungen

Standardmäßig nimmt libcamera-still Bilder mit der maximal verfügbaren Auflösung auf, die von der Kamera unterstützt wird. Für die HQ-Kamera bedeutet das zum Beispiel Bilder mit einer Größe von 4056×3040 Pixeln. Aber es ist einfach, dies mit den Parametern –width und –height zu ändern. Wenn Sie zum Beispiel ein Bild mit 1280×720 Pixeln aufnehmen möchten, sollten Sie den Parameter –width und –height verwenden:

libcamera-still --width 1280 --height 720 -o kleinesbild.jpg

Bildkodierer und Dateiformate

Bilder werden normalerweise auf irgendeine Weise kodiert (oft werden sie komprimiert, damit sie nicht so groß sind und weniger platz verbrauchen) und dann in einem Standarddateiformat auf der Festplatte gespeichert.

JPEG-Dateien

Das Standard-Dateiformat, das libcamera-still verwendet, ist JPEG, weil es sehr breit unterstützt wird und einen nützlichen Komprimierungsgrad aufweist. Normalerweise erhalten JPEG-Dateien die Endung .jpg, manchmal auch .jpeg, wie wir bereits gesehen haben.

JPEG ist ein verlustbehaftetes Komprimierungsformat, d. h. das Ergebnis des Ladens Ihrer JPEG-Datei ist nicht mehr identisch mit dem Bild, von dem Sie ausgegangen sind, obwohl die Unterschiede so gestaltet sind, dass Sie sie am wenigsten bemerken. Im Gegenzug können Sie einen Qualitätsfaktor festlegen, der angibt, wie stark Sie die Komprimierung wünschen. Bei sehr niedrigen Werten wird Ihr Bild in der Tat schlechter, aber bei sehr hohen Werten ist der JPEG-Prozess visuell verlustfrei, d. h. er sieht wirklich so gut aus wie das ursprüngliche Kamerabild.

Der Qualitätsfaktor reicht von 1 bis 99, und wenn Sie keinen Wert angeben, wird der Wert 93 gewählt, was inoffiziell einer „ziemlich hohen Qualität“ entspricht. Um ein JPEG mit einer anderen Qualitätsstufe zu speichern, verwenden Sie den Parameter -q (oder äquivalent –quality) wie folgt:

libcamera-still -q 70 -o test.jpg

Experimentieren Sie gerne mit Qualitätswerten um zu sehen, was Sie erhalten!

PNG Datein

PNG (oder „Portable Network Graphic“) ist ein weiteres Datei- und Komprimierungsformat, das sich einer breiten Unterstützung erfreut. PNG ist ein verlustfreies Komprimierungsformat, was bedeutet, dass Sie garantiert genau das gleiche Bild wiederherstellen können, von dem Sie ausgegangen sind (im Gegensatz zu JPEG). Nachteilig ist, dass PNG-Dateien normalerweise größer sind als JPEG-Dateien und dass ihre Erstellung schwieriger ist und mehr Zeit in Anspruch nimmt.

Um eine PNG-Datei zu speichern, müssen Sie libcamera-still mitteilen, dass Sie einen anderen Encoder verwenden wollen, indem Sie den Parameter -e oder –encoder verwenden, etwa so:

libcamera-still -e png -o test.png

Beachten Sie, dass Sie die Option -e angeben müssen, um eine PNG-Datei zu erhalten – das Ändern des Dateinamens allein reicht nicht aus und PNG unterstützt keinen Qualitätsparameter.

DNG Datein

DNG- oder „Digital NeGative“-Dateien unterscheiden sich deutlich von PNG-Dateien. Wie der vollständige Name schon sagt, sind sie in gewisser Weise mit den „Negativen“ vergleichbar, die wir von Filmkameras hatten, bevor wir sie zu Fotos entwickelten. In unserem Fall speichert die DNG-Datei die vom Bildsensor empfangenen Rohdaten, bevor die Hardware des Raspberry Pi sie zu einem anzeigbaren Bild (JPEG oder PNG) „entwickelt“. DNG-Dateien werden zusammen mit der „entwickelten“ JPEG- oder PNG-Version desselben Bildes gespeichert. Um eine DNG-Datei zu speichern, verwenden Sie den Parameter -r (oder –raw):

libcamera-still -r test.jpg

libcamera-still ersetzt im DNG-Dateinamen automatisch .jpg durch .dng, was in diesem Fall sowohl test.dng als auch test.jpg ergibt.

Es gibt viele Softwareprogramme von Drittanbietern, um diese DNG-Dateien interaktiv zu „entwickeln“ – ein ziemlich komplexes Verfahren, das den Rahmen dieses Leitfadens sprengen würde.

Zeitraffer-Aufnahmen

Bei einer Zeitrafferaufnahme nehmen wir ein Bild in regelmäßigen Abständen auf, vielleicht jede Minute, Stunde oder jeden Tag, und fügen sie dann zu einem Video zusammen, das wir mit einer viel schnelleren Geschwindigkeit abspielen. libcamera-still ist so eingerichtet, dass es die Bilder, die wir brauchen, sofort aufnimmt.

Wir müssen die Option –timelapse einführen, und wir werden ein paar Optionen durchgehen, die wir schon gesehen haben.

-t oder -timeout

Die Zeitspanne in Millisekunden, für die eine Aufnahme durchgeführt werden soll. Im Fall von Timelapse wird libcamera-still die Bilder insgesamt für diese Dauer aufnehmen. Sie können den Wert 0 übergeben, was „unbegrenzt laufen“ bedeutet (dann müssen Sie libcamera-still manuell stoppen, zum Beispiel durch Drücken von CTRL+C auf der Tastatur).

-timelapse

Die Zeitspanne, wiederum in Millisekunden, zwischen den einzelnen Zeitraffer-Aufnahmen.

-o oder -output

Der Name der Ausgabedatei oder -dateien. Bei Zeitrafferaufnahmen können wir nicht allen Bildern denselben Namen geben, daher verwenden wir eine spezielle Syntax, die einen Bildzähler enthält. Zum Beispiel bedeutet -o capture_%04d.jpg, dass alle Dateien „capture_“ heißen, gefolgt von einem Zähler und dann .jpg. %04d gibt an, wie der Zähler formatiert ist, in diesem Fall bedeutet die 0, dass führende Nullen an die Zahl angehängt werden, und die 4 bedeutet, dass jede Zahl mindestens vier Ziffern hat. Dies ist nützlich, damit Sie beim Auflisten Ihrer Bilddateien diese in chronologischer Reihenfolge vorfinden.

Nehmen wir ein Beispiel.

libcamera-still -o aufname_%04d.jpg--timelapse 5000 -t 30000 --width 1024 --height 768

Dieser Vorgang läuft 30 Sekunden lang, wobei alle 5 Sekunden ein Bild aufgenommen wird. Die Bilder werden aufname_0000.jpg bis aufname_0004.jpg genannt.
Beachten Sie, dass wir die Auflösung der Bilder auf eine Auflösung reduziert haben, die für das endgültige Video, das wir erstellen wollen, besser geeignet ist.

Zusammenfügen Ihrer Bilder zu einem Video

Es gibt ein praktisches Tool namens FFmpeg, das in der Lage ist, eine Reihe von Standbildern in ein Video zu verwandeln. Wir können es wie folgt verwenden.

ffmpeg -r 2 -i aufname_%04d.jpg video.mp4

Beachten Sie, wie wir den Namen der Eingabedateien mit der speziellen %-Syntax formatieren, so wie wir es bei libcamera-still getan haben. Der Parameter -r gibt die Bildrate des Ausgabevideos an, in diesem Fall 2 Bilder pro Sekunde. Wir haben für die Ausgabedatei das MP4-Format gewählt und sie video.mp4 genannt.

FFmpeg ist ein äußerst vielseitiges Tool, das Sie unbedingt kennenlernen sollten.

Autofokus

Wenn Sie das Kameramodul 3 verwenden, wird der Autofokus im kontinuierlichen Modus automatisch aktiviert. Das bedeutet, dass sich das Kameraobjektiv immer dann bewegt, wenn es notwendig ist, um die optimale Schärfe auf den mittleren Teil des Bildes zu erhalten, und das ist wahrscheinlich das, was die meisten Benutzer die meiste Zeit wollen.

Es ist auch möglich, den Autofokus zu deaktivieren und die Fokusposition des Objektivs manuell einzustellen. Dazu verwenden Sie den Parameter –lens-position und übergeben ihm einen in Dioptrien gemessenen Wert, d. h. den Kehrwert der Fokusentfernung. Um also bei einer sehr geringen Entfernung von etwa 0,1 m zu fokussieren, geben Sie den Wert 10 ein (das ist 1 / 0,1). Um auf unendlich zu fokussieren, geben Sie 0 ein (informell der Wert von 1 / unendlich). Sie können auch nicht-ganzzahlige Werte eingeben. Zum Beispiel:

libcamera-still --lens-position 0 -o infinity.jpg

wird die fokus position auf unendlich gesetzt und das Objektiv nicht mehr bewegt.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert