Raspberry Pi 3 Mod B / B+:    Kamera Modul
 

Camera V2.1
Das Bild zeigt einen Raspberry Pi 3 Modell B+, sowie das Camera-Modul V 2.1, welches mit dem beiliegenden Flachbandkabel am CSI Kamera Anschluss angeschlossen werden muß. Die Kamera ist damit hardwaremäßig betriebsbereit.
 
 
 
Abmessungen: 25x20x9mm  -  Sensor: 5 Megapixel mit Fixfokusobjektiv  -  Fotoauflösung: bis 2592 x 1944 Pixel
Videoauflösung: 1920 x 1080 / 30 Frames  -  1280 x 720 / 60 Frames  -  640 x 480 / 60 oder 90 Frames
 
Camera
einschalten
Das Menü des Raspberry Pi Software-Configuration Tools aufrufen durch ..
sudo raspi-config
 
Im ersten Menü ..5.Interfacing Options.. wählen
 
Im zweiten Menü ..P1 Camera.. wählen,
dann durch [TAB] auf <Select>, durch [TAB] <Finish>
Rechner neu starten durch ..
sudo shutdown -r 0
Bild aufnehmen
Ein Verzeichnis einstellen, in dem Bilder oder Videos abgelegt werden sollen. Ohne eine solche Einstellung werden diese Dateien im Wurzelverzeichnis /./ abgelegt.
cd /home/pi/Bilder/
Ein Bild kann nun durch den Befehl .. aufgenommen werden ..
raspistill -o bildname.jpg
Der Ablauf lässt sich durch .. in einem Befehl abarbeiten ..
sudo raspistill -o /home/pi/bildname.jpg
 
Video aufnehmen
Der einfachste Befehl hierzu lautet ..
raspivid -o /home/pi/Bilder/videoname.h264
 
Es wird ein 5 Sekunden langes Video im h264-Format aufgezeichnet. Um dieses Video in das .mp4-Format umzuwandeln, muß ein Konvertierungsprogramm installiert werden. z.B. das Programm gpac
sudo apt-get install gpac
Der folgende Befehl wandelt nun die h264-Datei in eine mp4-Datei mit 30 fps (Frames per Second um ..
MP4Box -fps 30 -add /home/pi/Bilder/video.h264 /home/pi/Bilder/video.mp4
 
Hier macht es Sinn, das verwendete Verzeichnis des Videos /home/pi/Bilder/ bereits voreinzustellen. Dann verkürzt sich der Befehl zu ..
MP4Box -fps 30 -add video.h264 video.mp4
Links
picamera.readthedocs.io/en/release-1.13/
netzmafia.de/skripten/hardware/RasPi/kamera/index.html
raspberrypi.org/documentation/raspbian/applications/camera.md
jankarres.de/2013/05/raspberry-pi-raspistill-und-raspivid-parameter
 
1.Programm:
Über die HTTP-Datei 'kamera.php' das Python-Programm 'camera.py' ausführen
Python-Programme sind typischerweise dem Benutzer 'root' zugeordnet. Dagegen wird als Benutzer von PHP-Programmen 'www-data' genannt. Damit 'www-data' auf Dateien des Benutzes root zugreifen kann, muss in der Datei sudoers.tmp eine Zeile eingefügt werden. (siehe hierzu auch den Text PHP->Python). Im vorliegenden Fall wird davon ausgegangen, dass sich das Programm camera.py im Verzeichnis /usr/ befindet und keine Parameter übergeben bekommt.
 
1. NANO Editor mit der Datei sudoers.tmp öffnen durch ..
sudo visudo
2. Rechte für www-data an dem python-Interpreter und dem zu startenden Programm in einer Zeile hinzufügen ..
www-data ALL=(ALL) NOPASSWD: /usr/bin/python /usr/camera.py
 
camera.py
Das python-Programm /usr/camera.py legt in der Datei testbild.jpg ein Bild mit der Auflösung von 1000 x 750 Pixeln bei 72 dpi ab. Das Bild wird um 180° gedreht, da die Kamera auf dem Kopf steht. Das Testbild wird in dem Unterverzeichnis /kamera/ des Internetverzeichnisses des Raspberry Pi /var/www/html/ abgelegt. Hier befindet sich auch das PHP-Programm, welches das Python-Progamm aufrufen und das Bild anzeigen soll.
 
import picamera

# Pfad zur BILDdatei testbild.jpg
BILDdatei= "/var/www/html/kamera/testbild.jpg"

cam = picamera.PiCamera()
try:
# Bildformat der Kamera 1:0,75
  cam.resolution = (1000, 750)
  cam.rotation = 180
  cam.capture(BILDdatei)
except IOError as (errno, strerror):
  print "I/O error({0}): {1}".format(errno, strerror)
finally:
  cam.close()
 
kamera.php
Die aus einem Browser heraus aufgerufene HTTP-Datei kamera.php ruft das python-Programm camera.py auf und zeigt folgend das erstellte Bild auf dem Monitor an. Das PHP-Programm gibt im Bildnamen auch an, wann das Bild erstellt wurde.
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-1">
<TITLE>Kamera</TITLE>
</HEAD>
 
<BODY>
<?php
// Aufruf des python-Programms 'camera'
$PGMpfad = 'sudo python /usr/camera.py';
shell_exec($PGMpfad);
// Aktuelle Zeit holen
$Titel="Bild vom ".date(" d.m.Y - H:i:s");
?>
<ADDRESS STYLE="font-style: normal; text-align: center"><FONT SIZE=2 STYLE="font-size: 11pt">
<!-- Bild anzeigen -->
<IMG SRC="testbild.jpg" ALIGN=BOTTOM BORDER=0>
<!-- Name des Bildes ausgeben -->
<BR><?php echo $Titel; ?></FONT></ADDRESS>
</BODY>
</HTML>
 
 
2.Programm:
Über die HTTP-Datei 'kamera.php' das Python-Programm 'camera.py' mit Übergabeparametern aufrufen
Python-Programme sind typischerweise dem Benutzer 'root' zugeordnet. Dagegen wird als Benutzer von PHP-Programmen 'www-data' genannt. Damit 'www-data' auf Dateien des Benutzes root zugreifen kann, muss in der Datei sudoers.tmp eine Zeile eingefügt werden. (siehe hierzu auch den Text PHP->Python). Im vorliegenden Fall wird davon ausgegangen, dass sich das Programm camera.py im Verzeichnis /usr/ befindet und mind. 1 Parameter übergeben bekommt, den das Zeichen * kennzeich-net.
 
1. NANO Editor mit der Datei sudoers.tmp öffnen durch ..
sudo visudo
2. Rechte für www-data an dem python-Interpreter und dem zu startenden Programm in einer Zeile hinzufügen ..
www-data ALL=(ALL) NOPASSWD: /usr/bin/python /usr/camera.py *
 
camera.py
Das nachfolgende Python-Programm erzeugt nach seinem Aufruf ebenfalls ein Bild mit dem Kameramodul. Ihm muß als Übergabeparameter zwingend der Ablageort des Bildes angegeben werden. Ist dieses Verzeichnis auf dem Raspberry Pi nicht vorhanden, wird das Verzeichnis /usr/ benutzt. Wurde kein Bildname angegeben lautet dieser bild. Der Typ des Bildes wird den Voreinstellungen entnommen, so in dem Übergabeparameter picTYP nichts anderes bestimmt wird. z.B. picTYP=.gif .
Die möglichen Übergabeparateter können dem Array d des Programms entnommen werden. Ihr Name und ihr Wert müssen durch ein Gleichheitszeichen voneinander getrennt werden. Soll die Breite des Bildes nur 640 Pixel betragen so würde der Übergabeparameter picB=640 lauten. Freizeichen dürfen wie bereits erwähnt nicht eingefügt werden, sie trennen bei Python die Übergabeparameter voneinander. Nicht in dem Array enthaltene Parameter-Namen werden verworfen, die Gültigkeit der Parameter-Werte wird nicht kontrolliert. Die Abfolge der Übergabeparameter ist beliebig.
 
Es ist möglich, innerhalb des Bildes einen Text zu platzieren. Im vorliegenden Programm wurde diese Möglichkeit nicht genutzt. Werden die nachfolgenden Zeilen im Programm eingefügt, erscheint der Text 'GoBlack – Datum Uhrzeit' im Bild. Diese Ausgabe kann auch über ein .php-Programm an einer besser geeigneten Stelle vorgenommen werden.
 
# Text im Bild
# Im Bild (Oben, Mitte) kann ein Text ausgegeben werden. Für dessen Hintergrund kann eine
# Farbe angegeben werden. Die Farbe des Textes leitet sich aus der Hintergrundfarbe ab
# und kann nur heller oder dunkler eingestellt werden. (siehe auch YUV)
# Im vorliegenden Programm wurde diese Möglichkeit nicht benutzt
 
cam.annotate_background = Color('#663333') # RGB -dunkles braun
cam.annotate_foreground = Color('#FFFF00') # RGB -Helligkeitsanpassung
cam.annotate_text_size = 14 # Textgröße Standard 32 .. 6-160
cam.annotate_text = dt.datetime.now().strftime(' GoBlack - %d.%m.%Y %H:%M:%S ')
 
 
kamera.php
Die aus einem Browser heraus aufgerufene HTTP-Datei kamera.php ruft das python-Programm camera.py auf und zeigt folgend das erstellte Bild auf dem Monitor an. Das PHP-Programm gibt im Bildnamen auch an, wann das Bild erstellt wurde.
 
 
Links
 
https://codingworld.io/project/die-raspberry-pi-kamera-benutzen
https://www.raspberrypi.org/documentation/raspbian/applications/camera.md
http://raspberrypiguide.de/howtos/raspberry-pi-camera-how-to/
 
 
www.GoBlack.de