Raspberry Pi Kamera mit Python benutzen

Eine der Hauptattraktionen der Raspberry Pi-Plattform ist das Kameramodul, dass sich sehr einfach via Schnittstellen zu nutzen ist.

Zurzeit bietet die Raspberry Pi Foundation drei Kameramodule an:

  • Camera Module 2
  • Camera Module 2 NoIR
  • Raspberry Pi High-Quality Camera

Das Kameramodul 2 ist ein Ersatz für das ursprüngliche Kameramodul vom April 2016. Das V2-Modul hat einen Sony IMX219 8-Megapixel-Sensor im Vergleich zum OmniVision OV5647 5-Megapixel-Sensor im Originalmodul. Das Modul ist mit Raspberry Pi 1, 2, 3 und 4 kompatibel. Es kann einfach an den CSI-Port (Camera Serial Interface) eines jeden Raspberry Pi angeschlossen werden. Das V2-Kameramodul unterstützt die Videomodi 1080p30, 720p60 und VGA90. Das neue Modul bietet nicht nur eine höhere Auflösung. Es bietet auch eine weitaus bessere Bildqualität, Leistung bei schlechten Lichtverhältnissen und Farbtreue. Das Infrarot-Kameramodul 2 ist das gleiche wie das reguläre Modul 2, nur dass es keinen Infrarotfilter verwendet. Die Pi NoIR-Kamera ist sehr nützlich für Nachtaufnahmen und Videoaufnahmen. Bei der hochwertigen Kamera handelt es sich um einen 12,3-Megapixel-Sony-IMX477-Sensor, der C- und CS-Mount-Objektive unterstützt.

Mit dem Raspberry Pi Kameramodul können Sie viele spannende Projekte entwickeln. Indem Sie einfach ein Kameramodul mit Ihrem kleinen Taschencomputer installieren, können Sie die weite Welt der Bildverarbeitung, der Videoverarbeitung und sogar des maschinellen Lernens erkunden. In diesem Artikel erfahren Sie, wie Sie mit dem Kameramodul beginnen und es mit Python steuern können.

Setup: Was wir brauchen

Alles, was wir brauchen, ist ein Raspberry Pi (1/2/3/4) und das Kameramodul. Das Standard-Kameramodul wird verwendet, um Bilder bei Licht aufzunehmen. Die NoIR Pi Kamera nimmt Bilder im Dunkeln auf und benötigt eine zusätzliche Infrarot-Lichtquelle. In diesem Artikel werden wir mit dem Standard-Kameramodul arbeiten. Das Kameramodul muss mit einem flexiblen Flachbandkabel zum Anschluss an den CSI-Port geliefert werden. Ein anderes kleineres Kabel wird benötigt, um die Kamera mit dem Raspberry Pi Zero zu verbinden.

Raspberry Pi Kameramodul anschließen

Alle Raspberry Pi haben eine serielle Schnittstelle für Kameras (CSI-Port). Das Kameramodul wird an den CSI-Port angeschlossen. Oft wird der CSI-Port mit dem Display-Port verwechselt. Die Lage des CSI-Ports am Raspberry Pi ist unten dargestellt.

Bild von der Raspberry Pi Foundation mit markiertem CSI-Port

Um das Kameramodul zu installieren, suchen Sie den CSI-Anschluss. Entfernen Sie vorsichtig die Kunststoffklammer des Anschlusses. Stecken Sie das Flachbandkabel des Kameramoduls so in den CSI-Anschluss, dass die Anschlüsse an der Unterseite des Kabels zu den Kontakten des Anschlusses zeigen. Bringen Sie die Kunststoffklammer wieder an, damit das Flachbandkabel gesichert ist. Das an den Raspberry Pi angeschlossene Kameramodul sieht wie unten abgebildet aus.

Bild von der Raspberry Pi Foundation mit angeschlossenem Kameramodul

Aktivieren der Raspberry Pi Kamera

Das Kameramodul ist standardmäßig nicht aktiviert. Nachdem wir das Kameramodul angebracht haben, starten Sie den Raspberry Pi. Gehen Sie zum Hauptmenü und öffnen Sie das Raspberry Pi Konfigurationstool. Sie können das Konfigurationstool auch über das Terminal öffnen, indem Sie sudo raspi-config eingeben.

sudo raspi-config
# Menü  3 Interface Options    Configure connections to peripherals 
# I1 Legacy Camera Enable/disable legacy camera support   
# Would you like to enable legacy camera support?  -> <Ja>  

Wenn folgender Fehler auftritt haben Sie vergessen die Camera zu aktivieren oder zu booten 😉

mmal: mmal_vc_component_create: failed to create component 'vc.ril.camera' (1:ENOMEM)
mmal: mmal_component_create_core: could not create component 'vc.ril.camera' (1)
Traceback (most recent call last):
  File "/home/pi/.local/lib/python3.9/site-packages/picamera/camera.py", line 456, in _init_camera
    self._camera = mo.MMALCamera()
  File "/home/pi/.local/lib/python3.9/site-packages/picamera/mmalobj.py", line 2279, in __init__
    super(MMALCamera, self).__init__()
  File "/home/pi/.local/lib/python3.9/site-packages/picamera/mmalobj.py", line 631, in __init__
    mmal_check(
  File "/home/pi/.local/lib/python3.9/site-packages/picamera/exc.py", line 184, in mmal_check
    raise PiCameraMMALError(status, prefix)
picamera.exc.PiCameraMMALError: Failed to create MMAL component b'vc.ril.camera': Out of memory

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/pi/picam/picam.py", line 4, in <module>
    camera = PiCamera()
  File "/home/pi/.local/lib/python3.9/site-packages/picamera/camera.py", line 431, in __init__
    self._init_camera(camera_num, stereo_mode, stereo_decimate)
  File "/home/pi/.local/lib/python3.9/site-packages/picamera/camera.py", line 459, in _init_camera
    raise PiCameraError(
picamera.exc.PiCameraError: Camera is not enabled. Try running 'sudo raspi-config' and ensure that the camera has been enabled.

Raspberry Pi: Bilder von der Kommandozeile aus aufnehmen

Sobald das Kameramodul installiert und aktiviert ist, ist es an der Zeit, das Modul zu testen. Der beste Ort zum Testen des Kameramoduls ist die Kommandozeile des Raspberry Pi, d.h. die Bash-Shell. Öffnen Sie das Terminal-Fenster, indem Sie auf das Terminal-Symbol in der Taskleiste klicken.

Um ein Bild aufzunehmen, geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste.

raspistill -o Desktop/Bild.jpg

Der obige Befehl nimmt ein Standbild mit dem Kameramodul auf und speichert es auf dem Desktop. Die Kameravorschau wird fünf Sekunden lang geöffnet, wenn der obige Befehl ausgeführt wird, und wird geschlossen, wenn ein Standbild aufgenommen wurde. Die Bilder können an einem beliebigen anderen Ort gespeichert werden, sofern der angegebene Ordner in der Verzeichnisstruktur des Raspberry Pi vorhanden ist.

Raspberry Pi: Aufnehmen eines Videos über die Kommandozeile


Um ein Video mit dem Kameramodul aufzunehmen, geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste.
raspivid -o Desktop/video.h264
Der obige Befehl nimmt eine Videoaufnahme auf und speichert das aufgenommene Video in einem angegebenen Ordner, wenn er unterbrochen wird. Wie Bilder können auch die Videos an einem beliebigen Ort gespeichert werden, sofern der angegebene Ordner in der Verzeichnisstruktur des Raspberry Pi vorhanden ist. Die gespeicherten Videos können mit einem VLC-Player abgespielt werden.

Steuerung des Kameramoduls mit Python

Das Kameramodul kann mit Python gesteuert werden. Dazu wird die picamera-Bibliothek benötigt. Bei Raspberry Pi 3/4 ist die picamera Bibliothek bereits mit der IDLE oder Thonny Python IDE installiert. Falls die Picamera-Bibliothek fehlt, kann sie mit den folgenden Befehlen für alle Benutzer installiert werden.

sudo apt-get update
sudo apt-get upgrade
# Die picamera-Bibliothek kann auch für alle Benutzer installiert werden, die PIP verwenden.
pip3 install picamera
# In einem Python-Skript kann die Picamera-Bibliothek mit den folgenden Befehlen importiert werden.
from picamera import PiCamera
Um das Kameramodul in einem Python-Skript zu verwenden, muss ein Objekt der Picamera-Klasse wie folgt instanziiert werden.
camera = PiCamera()

Testen des Kameramoduls mit Python

Um das Kameramodul mit Python zu testen, ist es am besten, die Kameravorschau für einige Zeit laufen zu lassen. Wenn das Kameramodul richtig installiert ist und mit dem Raspberry Pi Board funktioniert, blinkt eine rote LED auf dem Kameramodul, sobald das Raspberry Pi Board gebootet wird. Die rote LED bleibt eingeschaltet, wenn die Kamera aktiv ist.
Speichern Sie das folgende Python-Skript in einer .py-Datei und führen Sie den Code aus, um eine Vorschau der Kamera zu sehen.

from picamera import PiCamera
from time import sleep
camera = PiCamera()
camera.start_preview()
sleep(5)
camera.stop_preview()

Es ist zu beachten, dass die Datei niemals als picamera.py gespeichert werden sollte.
Es sollte auch beachtet werden, dass die Kameravorschau nur funktioniert, wenn ein Monitor mit dem Raspberry Pi verbunden ist. Sie funktioniert nicht mit Fernzugriff, weder SSH noch VNC.
Die Methode start_preview() startet eine Kameravorschau. Wenn die Kameravorschau aktiv ist, wird der gesamte Bildschirm des Monitors von der Kameravorschau belegt. Die Kameravorschau kann aus dem Python-Code heraus mit der Methode stop_preview() gestoppt werden. Wenn Sie es versäumt haben, eine Codezeile zum Anhalten der Kameravorschau hinzuzufügen, kann sie nur durch Beenden der Skriptausführung gestoppt werden. Da der gesamte Bildschirm von der Kameravorschau belegt ist, drücken Sie Strg+F2, um die Codeausführung zu beenden. Dadurch wird die Kameravorschau sicher beendet.

Aufnahme von Standbildern mit der Raspberry Pi Kamera mit Python

Die Standbilder können mit der capture()-Methode der Picamera-Klasse aufgenommen werden. Die Methode erfordert einen Dateipfad zum Speichern des Bildes mit einem korrekt angegebenen Bildformat. Führen Sie den folgenden Code aus, um ein Standbild mit Python aufzunehmen.

from picamera import PiCamera
from time import sleep
camera = PiCamera()
camera.start_preview()
sleep(5)
camera.capture(‘/home/pi/Desktop/image.jpg’)
camera.stop_preview()

Die Methode sleep() muss mindestens 2 Sekunden lang aufgerufen werden, bevor das Bild aufgenommen wird. Der Kamerasensor benötigt einige Zeit, um die Lichtverhältnisse zu erfassen. Ein paar Sekunden nach dem Start der Kameravorschau gibt dem Modul Zeit, sich an das Umgebungslicht anzupassen.
Der obige Code lässt die Kameravorschau 5 Sekunden lang laufen. Er nimmt ein Standbild auf und speichert es in dem angegebenen Ordner. Der Ordner muss in der Verzeichnisstruktur des Raspberry Pi vorhanden sein, und der Bildname muss in einem anerkannten Format wie jpg, jpeg oder png angegeben werden.
Um mehrere Bilder aufzunehmen, kann eine for-Schleife wie folgt verwendet werden.

from picamera import PiCamera
from time import sleep
camera = PiCamera()
camera.start_preview()
for i in range(5):
sleep(5)
camera.capture(‘/home/pi/Desktop/image%s.jpg’ % i)
camera.stop_preview()

Der obige Code öffnet eine Kameravorschau, nimmt fünf Bilder im Abstand von 5 Sekunden auf und schließt schließlich die Kameravorschau.

Videoaufnahme mit der Raspberry Pi Kamera mit Python

Ein Video kann mit den Methoden start_recording() und stop_recording() der picamera Bibliothek aufgenommen werden. Die start_recording-Methode startet die Aufnahme eines Videos. Danach kann eine sleep()-Methode für die vorgesehene Dauer der Videoaufnahme aufgerufen werden. Die Videoaufzeichnung kann mit der Methode stop_recording() gestoppt werden. Führen Sie den folgenden Code aus, um ein Video mit Python aufzuzeichnen.

from picamera import PiCamera
from time import sleep
camera = PiCamera()
camera.start_preview()
camera.start_recording(‘/home/pi/Desktop/video.h264’)
sleep(10)
camera.stop_recording()
camera.stop_preview()

Der obige Code zeichnet ein Video mit einer Raspberry Pi Kamera für eine Dauer von 10 Sekunden auf. Das aufgezeichnete Video wird an dem angegebenen Ort gespeichert. Der angegebene Speicherort muss in der Verzeichnisstruktur des Raspberry Pi vorhanden sein. Der Name des Videos muss im richtigen Dateiformat angegeben werden. Die Picamera-Bibliothek unterstützt die Videoformate h264 und mjpeg.

Drehen der Kameravorschau

Durch den ungeraden Einbau des Kameramoduls kann es vorkommen, dass die Kameravorschau auf dem Monitor nicht richtig ausgerichtet ist. Die Kameravorschau kann mithilfe der Rotationseigenschaft des Kameraobjekts um 90˚, 180˚ und 270˚ gedreht werden. Wenn die Kameravorschau auf dem Kopf steht, verwenden Sie den folgenden Code.

camera = PiCamera()
camera.rotation = 180

Die Kameravorschau durchsichtig machen

Es ist möglich, die Kameravorschau durchsichtig zu machen. Das ist nützlich, um die Kompilierungsfehler des Codes zu sehen, während die Kameravorschau aktiv ist. Dazu wird die Alphastufe der Kameravorschau eingestellt. Er wird als Argument an die Methode start_preview() übergeben. Der Wert eines Alpha-Parameters kann zwischen 0 und 255 eingestellt werden.

camera = PiCamera()
camera.start_preview(alpha=200)

Ändern der Helligkeit der Kameravorschau

Die Helligkeit der Kameravorschau kann durch Ändern der Eigenschaft brightness des Kameraobjekts eingestellt werden. Die Helligkeit kann zwischen 0 und 100 eingestellt werden.

camera = PiCamera()
camera.start_preview()
camera.brightness = 70

Ändern des Kontrasts der Kameravorschau

Der Kontrast der Kameravorschau kann durch Ändern der Kontrasteigenschaft des Kameraobjekts eingestellt werden. Der Kontrast kann zwischen 0 und 100 eingestellt werden.

camera = PiCamera()
camera.start_preview()
camera.contrast = 70

Ändern von Auflösung und Bildrate

Die Auflösung der aufgenommenen Bilder ist standardmäßig auf die Auflösung des Monitors eingestellt. Die maximale Auflösung für Standbilder kann 2596×1944 und für Videoaufnahmen 1920×1080 betragen. Die Mindestauflösung beträgt 64×64. Die Auflösung kann durch Ändern der Eigenschaft Auflösung des Kameraobjekts geändert werden. Es sollte beachtet werden, dass bei einer hohen Auflösung die Bildwiederholrate reduziert werden muss, um eine einwandfreie Funktion zu gewährleisten, indem die Eigenschaft Framerate des Kameraobjekts geändert wird.

camera = PiCamera()
camera.resolution = (2592, 1944)
camera.framerate = 15

Hinzufügen von Text zu den Bildern

Es ist möglich, den Standbildern Text hinzuzufügen, indem die Eigenschaft annotate_text des Kameraobjekts angegeben wird.

camera = PiCamera()
camera.start_preview()
camera.annotate_text = “www.hagenfragen.de”

Ändern der Schriftart und Farbe des hinzugefügten Textes

Die Schriftgröße, die Farbe und die Hintergrundfarbe des hinzugefügten Textes können durch Angabe der Eigenschaften annotate_text_size, annotate_foreground und annotate_background des Kameraobjekts geändert werden. Um dem Text eine Farbe hinzuzufügen, muss die Farbklasse ebenfalls aus picamera importiert werden. Die Textgröße kann zwischen 6 und 160 eingestellt werden. Die Standardtextgröße ist 32.

from picamera import PiCamera, Color
from time import sleep
camera = PiCamera()
camera.start_preview()
camera.annotate_text_size = 50
camera.annotate_background = Color(‘blue’)
camera.annotate_foreground = Color(‘yellow’)
camera.annotate_text = “www.hagenfragen.de”
sleep(5)
camera.capture(‘/home/pi/Desktop/bild.jpg’)
camera.stop_preview()

Fazit

Das Raspberry Pi Kameramodul macht wirklich Spaß. Die Picamera-Bibliothek ist gut geschrieben und leistungsstark. Sie ermöglicht die Aufnahme von Bildern, die Aufzeichnung von Videos, das Streaming von Videos, das Streaming von Videos in ein Netzwerk und sogar die Bildverarbeitung mit openCV. Das Kameramodul ist einfach zu installieren und bietet unendliche Möglichkeiten, viele spannende Dinge zu machen.

2 Kommentare
  1. Uwe Kraaz
    Uwe Kraaz sagte:

    Hallo,

    danke für die sehr hilfreichen Infos, ich bin gerade dabei. einen ersten Versuch mit den
    Kamera-Modul zu starten. Ziel ist das Vergrößern des kleinen RX-Displays verbunden
    mit der Einblendung in einer Oberfläche zum Empfang und der Decodierung des VLF-Senders
    SAQ Grimeton.
    Sind die Probleme mit dem 3D-Druck in der Zwischenzeit geklärt worden ? Ich konnte da schon einigen Funkfreunden helfen, bin auch hier gern dazu bereit.
    Bei meinen Druckern ist der zuverlässigste und in Bezug auf Druckqualität der Beste der Creality Sermoon D1. Creality ist in Bezug auf Ersatzteilbeschaffbarkeit und Zuverlässigkeit
    etwas besser als der Rest aus China, lediglich die ungenauen Z-Endschalter mußte ich (auch bei dem Sermoon D1) durch Opto – Sensoren ersetzen.

    Ein gutes 2023 wünscht abschließend der Uwe (DL5KU)

    Antworten
    • Hagen Glötter
      Hagen Glötter sagte:

      Hallo Uwe,
      Schön einen Funker hier zu sehen.
      Die Kamera läuft bei mir inzwischen bei mir stabil.
      Danke für die Infos über den Drucker. Im Moment bin ich recht zufrieden mit meinem AnyCubic I3 Mega 😉
      Wenn du willst kannst du gerne ein paar Drucke hier zeigen.

      Gruß Hagen (DG7SHG)

      Antworten

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar zu Hagen Glötter Antworten abbrechen

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