banner

Blog

Jun 12, 2023

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“ fügt jeder Datei 0, dann 1 und 2 hinzu. Das ergibt 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 stellen dann den Fokus für das Bild ein nächstes Bild. 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 versorgt digital-analoge Polaroidkamera mit Strom

Raspberry Pi erweckt Big Mouth Billy Bass mit ChatGPT zum Leben

GPU-Preise 2023: Juni-Update

Von Les Pounder, 23. April 2023

Von Avram Piltch, 22. April 2023

Von Brandon Hill, 21. April 2023

Von Avram Piltch, 20. April 2023

Von Brandon Hill, 16. April 2023

Von Les Pounder, 15. April 2023

Von Les Pounder 09. April 2023

Von Les Pounder, 25. März 2023

Von Jarred Walton, 19. März 2023

Von Les Pounder, 18. März 2023

Von Avram Piltch, 15. März 2023

Manuell: Automatisch: Kontinuierlich: Öffnen Sie im Hauptmenü Programmierung >> Thonny. Picamera2 importieren. Importieren Sie die Steuerklasse von libcamera. Erstellen Sie ein Objekt, picam2. Starten 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 unter“, um eine neue Datei mit dem Namen „ManualFocusTest.py“ zu erstellen. Ändern Sie die letzte Zeile, um „LensPosition“ zu verwenden. Fü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.py Import Picamera2. Importieren Sie die Steuerklasse von libcamera. Erstellen Sie ein Objekt, picam2. Starten 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.py Erstellen Sie eine neue Datei mit dem Namen HDRAfFastFocus.py. Importieren Sie Picamera2. Importieren Sie die Steuerklasse von libcamera. Importieren Sie das OS-Modul. Erstellen Sie ein Objekt, picam2. Verwenden Sie die Systemfunktion des OS-Moduls, um die Kamera für die Verwendung von HDR einzustellen. Drucken Sie eine Nachricht an die Python-Shell. Starten Sie ein Vorschaufenster. Stellen Sie den Autofokusmodus auf „Kontinuierlich“ und stellen Sie AfSpeed ​​auf „Schnell“ ein. Stellen 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 Benutzer. Speichern Sie den Code und führen Sie ihn aus.
AKTIE