So verwenden Sie das Raspberry Pi-Kameramodul 3 mit Python-Code
Verwenden Sie zur Steuerung die Picamera2-Bibliothek.
Der Raspberry Pi verfügt über viele der besten Zubehörteile und eines, das mit Sicherheit auf dieser Liste auftauchen wird, ist das neue Kameramodul 3. In unserem Testbericht zum Raspberry Pi Kameramodul 3 haben wir gesagt, dass wir den schnellen Autofokus und die HDR-Bilder lieben und das wollen Teilen Sie diese Funktionen in dieser Anleitung mit Ihnen.
Wenn Sie noch nie zuvor eine Raspberry Pi-Kamera verwendet haben, ist unser Einsteigerleitfaden für Picamera2 eine gute Einführung, damit Ihr Pi großartige Bilder machen kann. In dieser Anleitung erkunden wir die vielen Möglichkeiten, wie wir das Fokussystem des Kameramoduls 3 mit Picamera2 nutzen können, und lernen, wie man HDR-Bilder mit einem schnellen und einfachen Skript aufnimmt, das den Prozess automatisiert. Wenn Python nicht Ihr Ding ist, kann das Camera Module 3 auch mit libcamera über das Terminal gesteuert werden.
Der Autofokus verfügt über drei Betriebsmodi.
Bei der kontinuierlichen Fokussierung wird ein Algorithmus verwendet, um den Bildstrom nach einem Ziel zu durchsuchen. Es spielt keine Rolle, ob das Ziel nah (ca. 10 cm) oder weit entfernt ist, der Algorithmus findet das Ziel und erfasst es. Aber wie nutzen wir es? Lassen Sie uns einen kurzen Test durchführen. Wir verwenden einen kontinuierlichen Fokusmodus, um den bestmöglichen Fokus auf unser Ziel zu finden. Es wäre nützlich, einen Gegenstand zu haben, den man an die Kamera halten kann, wir haben einen Dollarschein verwendet.
1.Öffnen Sie im Hauptmenü Programmierung >> Thonny.
2.Picamera2 importieren.
3.Importieren Sie die Steuerklasse von libcamera.Damit können wir die Kamera entsprechend unseren Anforderungen konfigurieren.
4.Erstellen Sie ein Objekt, picam2die wir als Verbindung zwischen dem Code und unserer Kamera verwenden werden.
5.Starten Sie ein Vorschaufenster.In der Vorschau sehen wir die Ausgabe der Kamera.
6.Stellen Sie den AfMode (Autofokusmodus) auf kontinuierlich ein.
7.Speichern Sie den Code als AFtest.py.
8.Klicken Sie auf Ausführen, um den Code zu starten. Es erscheint ein Vorschaufenster. Bewegen Sie ein Objekt, wir haben einen Dollarschein ausgewählt, um den Rahmen und beobachten Sie, wie sich der Fokus verschiebt. Versuchen Sie, das Objekt näher an das Objektiv heranzuführen. Denken Sie daran, dass der nächste Fokuspunkt 10 Zentimeter beträgt.
Manchmal ist ein fester Fokus das, was wir brauchen, um eine tolle Aufnahme zu machen. Schließlich wollen wir kein verschwommenes Durcheinander einfangen. Das Fixieren des Fokus ist relativ einfach; Tatsächlich ist es so einfach, dass wir den größten Teil des Codes aus dem vorherigen Beispiel wiederverwenden können.
1.Verwenden Sie Speichern unterzum vorherigen Beispiel to Erstellen Sie eine neue Datei mit dem Namen ManualFocusTest.py
2.Ändern Sie die letzte Zeile, um LensPosition zu verwenden, setzen Sie in diesem Fall den Wert auf 0,0 für einen unendlichen Fokus.
3.Führen Sie den Code aus.Beachten Sie, dass der Fokus bei weit entfernten Objekten scharf ist, aus der Nähe jedoch verschwommen ist.
4.Ändern Sie den LensPosition-Wert auf 0,5.Dadurch erhalten wir eine Brennweite von ca. 50 cm.
5.Speichern Sie den Code und führen Sie ihn aus. Bewegen Sie ein Objekt zur Kamera hin und von ihr weg. Beachten Sie, wie der Fokus etwa 50 cm scharf wird.
Sei es eine Vogelkamera, ein Schulsporttag oder die Sicherheit zu Hause, manchmal müssen wir eine Reihe scharfer Bilder aufnehmen. Glücklicherweise können wir das Kameramodul 3 so einstellen, dass es eine Reihe schneller Bilder aufnimmt und den Autofokus auf hohe Geschwindigkeit einstellen.
1.Erstellen Sie eine neue Datei mit dem Namen AfFastFocus.py
2.Picamera2 importieren.
3.Importieren Sie die Steuerklasse von libcamera.Damit können wir die Kamera entsprechend unseren Anforderungen konfigurieren.
4.Erstellen Sie ein Objekt, picam2die wir als Verbindung zwischen dem Code und unserer Kamera verwenden werden.
5.Starten Sie ein Vorschaufenster.In der Vorschau sehen wir die Ausgabe der Kamera.
6.Stellen Sie den Autofokusmodus auf „Kontinuierlich“ und die AfSpeed auf „Schnell“.
7.Stellen Sie die Kamera so ein, dass sie drei Dateien mit einer Verzögerung von einer halben Sekunde zwischen den einzelnen Aufnahmen aufnimmt. Der Dateiname „fastfocus.jpg“ fügt jeder Datei 0, dann 1 und 2 hinzu. Geben Sie uns drei Dateien in numerischer Reihenfolge.
8.Schließen Sie das Vorschaufenster.
9.Schließen Sie die Kameraverbindung.
10.Speichern Sie den Code und führen Sie ihn aus. Halten Sie ein Objekt in drei verschiedenen Abständen zur Kamera und beobachten Sie, wie sich der Fokus ändert. Das Vorschaufenster friert ein, während die Kamera eine Aufnahme macht, und wird dann für die nächste Aufnahme freigegeben. Sobald drei Aufnahmen gemacht wurden, wird das Vorschaufenster geschlossen.
HDR-Bilder (High Dynamic Range) können problemlos mit libcamera aufgenommen werden. Wir müssen nur das Argument –hdr übergeben, wenn wir den Befehl ausführen. Aber für Picamera2 müssen wir einen Terminalbefehl ausführen, bevor wir unseren Python-Code ausführen.
HDR erhöht den dynamischen Helligkeitsbereich von Bildern. Mit HDR erhalten wir tiefere Dunkelheit und hellere Bilder. Dies funktioniert durch die Aufnahme mehrerer Bilder derselben Szene mit jeweils unterschiedlichen Belichtungen. Diese Bilder werden dann zu einem einzigen Bild zusammengefasst, das den gesamten Bereich umfasst. Das Kameramodul 3 kann HDR-Bilder aufnehmen, jedoch nicht mit der vollen 12-MP-Auflösung. Stattdessen erhalten wir ein 3MP-Bild mit einer Auflösung von 2304 x 1296 Pixeln.
Für unseren Test werden wir den Code aus dem wiederverwendenAfFastFocus.py Projekt, um eine Reihe von HDR-Bildern aufzunehmen. Wir werden auch die Betriebssystembibliothek von Python verwenden, um einen Terminalbefehl auszuführen, der die HDR-Einstellung ohne Benutzerinteraktion ein- und ausschaltet. Das bedeutet, dass wir nicht vergessen werden, die HDR-Einstellungen ein- und auszuschalten.
1.Erstellen Sie eine neue Datei mit dem Namen HDRAfFastFocus.py
2.Picamera2 importieren.
3.Importieren Sie die Steuerklasse von libcamera.Damit können wir die Kamera entsprechend unseren Anforderungen konfigurieren.
4.Importieren Sie das OS-Modul . Dadurch kann unser Code mit dem zugrunde liegenden Betriebssystem, in diesem Fall Raspberry Pi OS (Linux), interagieren.
5.Erstellen Sie ein Objekt, picam2die wir als Verbindung zwischen dem Code und unserer Kamera verwenden werden.
6.Verwenden Sie die Systemfunktion des Betriebssystemmoduls, um die Kamera auf die Verwendung von HDR einzustellen. Picamera2 unterstützt HDR, allerdings nicht direkt im Modul. Das Problem liegt bei V4L2, der Kernel-Schnittstelle zwischen der Kamera und dem Linux-Videosystem. Derzeit bietet diese Kamera keine vollständige Unterstützung für HDR, daher müssen wir diesen schnellen Workaround ausführen, um es in Picamera2 verfügbar zu machen.
7.Drucken Sie eine Nachricht an die Python-Shellinformiert uns, dass HDR aktiviert ist.
8.Starten Sie ein Vorschaufenster.In der Vorschau sehen wir die Ausgabe der Kamera.
9.Stellen Sie den Autofokusmodus auf Kontinuierlich einUndStellen Sie AfSpeed auf Fast ein.
10.Stellen Sie die Kamera so ein, dass sie drei Dateien mit einer Verzögerung von einer Sekunde zwischen den einzelnen Aufnahmen aufnimmt. Der Dateiname „HDRfastfocus.jpg“ wird an jede Datei 0, dann 1 und 2 anhängen. Geben Sie uns drei Dateien in numerischer Reihenfolge. Wir verdoppeln die Verzögerung zwischen den einzelnen Aufnahmen, um der Kamera Zeit zu geben, das vorherige Bild zu speichern und dann den Fokus für das nächste Bild festzulegen. Wir haben es mit einer Verzögerung von 0,5 getestet und unsere Aufnahmen waren manchmal etwas zu unscharf.
11.Schließen Sie das Vorschaufenster.
12.Schließen Sie die Kameraverbindung.
13.Drucken Sie eine Nachricht an den Benutzerdass HDR jetzt ausgeschaltet ist, und führen Sie dann den Befehl mit os.system aus.
14.Speichern Sie den Code und führen Sie ihn aus. Halten Sie ein Objekt in drei verschiedenen Abständen zur Kamera und beobachten Sie, wie sich der Fokus ändert. Das Vorschaufenster friert ein, während die Kamera eine Aufnahme macht, und wird dann für die nächste Aufnahme freigegeben. Sobald drei Aufnahmen gemacht wurden, wird das Vorschaufenster geschlossen.
Schließen Sie sich den Experten an, die Tom's Hardware lesen, um Insider-Informationen zu PC-Tech-News für Enthusiasten zu erhalten – und das seit über 25 Jahren. Wir senden Ihnen aktuelle Nachrichten und ausführliche Rezensionen zu CPUs, GPUs, KI, Hersteller-Hardware und mehr direkt in Ihren Posteingang.
Les Pounder ist Associate Editor bei Tom's Hardware. Er ist ein kreativer Technologe und hat sieben Jahre lang Projekte entwickelt, um Jung und Alt zu bilden und zu inspirieren. Er hat mit der Raspberry Pi Foundation zusammengearbeitet, um deren Lehrerausbildungsprogramm „Picademy“ zu schreiben und durchzuführen.
Raspberry Pi 4 unterstützt Handheld in einer Familie von 3D-gedruckten Projekten
Beste RP2040-Boards 2023
AMD behebt Raytracing-Abstürze in Ratchet and Clank: Rift Apart
Von Sammy Ekaran, 16. Juli 2023
Von Sammy Ekaran, 15. Juli 2023
Von Les Pounder, 8. Juli 2023
Von Matt Safford, 6. Juli 2023
Von Ash Hill, 5. Juli 2023
Von Les Pounder, 4. Juli 2023
Von Ash Hill, 3. Juli 2023
Von Ash Hill, 2. Juli 2023
Von Ben Stockton, 1. Juli 2023
Von Sydney Butler, 30. Juni 2023
Von Ben Stockton, 28. Juni 2023
Handbuch:Auto:Kontinuierlich:Öffnen Sie im Hauptmenü Programmierung >> Thonny.Picamera2 importieren.Importieren Sie die Steuerklasse von libcamera.Erstellen Sie ein Objekt, picam2Starten Sie ein Vorschaufenster.Stellen Sie den AfMode (Autofokusmodus) auf kontinuierlich ein.Speichern Sie den Code als AFtest.py.Klicken Sie auf Ausführen, um den Code zu starten.Verwenden Sie Speichern untero Erstellen Sie eine neue Datei mit dem Namen ManualFocusTest.pyÄndern Sie die letzte Zeile, um LensPosition zu verwendenFühren Sie den Code aus.Ändern Sie den LensPosition-Wert auf 0,5.Speichern Sie den Code und führen Sie ihn aus.Erstellen Sie eine neue Datei mit dem Namen AfFastFocus.pyPicamera2 importieren.Importieren Sie die Steuerklasse von libcamera.Erstellen Sie ein Objekt, picam2Starten Sie ein Vorschaufenster.Stellen Sie den Autofokusmodus auf „Kontinuierlich“ und die AfSpeed auf „Schnell“.Stellen Sie die Kamera so ein, dass sie drei Dateien mit einer Verzögerung von einer halben Sekunde zwischen den einzelnen Aufnahmen aufnimmt.Schließen Sie das Vorschaufenster.Schließen Sie die Kameraverbindung.Speichern Sie den Code und führen Sie ihn aus.AfFastFocus.pyErstellen Sie eine neue Datei mit dem Namen HDRAfFastFocus.pyPicamera2 importieren.Importieren Sie die Steuerklasse von libcamera.Importieren Sie das OS-ModulErstellen Sie ein Objekt, picam2Verwenden Sie die Systemfunktion des Betriebssystemmoduls, um die Kamera auf die Verwendung von HDR einzustellen.Drucken Sie eine Nachricht an die Python-ShellStarten Sie ein Vorschaufenster.Stellen Sie den Autofokusmodus auf Kontinuierlich einStellen Sie AfSpeed auf Fast einStellen Sie die Kamera so ein, dass sie drei Dateien mit einer Verzögerung von einer Sekunde zwischen den einzelnen Aufnahmen aufnimmt.Schließen Sie das Vorschaufenster.Schließen Sie die Kameraverbindung.Drucken Sie eine Nachricht an den BenutzerSpeichern Sie den Code und führen Sie ihn aus.