Zum grundlegenden Einrichten des Raspberry Pi gibt es eine
vorhergehende Seite.
Man schließt zunächst das Mikroskop an einen freien USB-Anschluss des RPi an.
(Hinweis: Es empfiehlt sich, vorher das Mikroskop mit einem Objekt auf dem PC schon einmal grob bzgl. der
Beleuchtung und Schärfe einzustellen)
Nun wird auf dem RPi die Software "fswebcam" installiert:
$ sudo apt-get install -y fswebcam
Zum Testen des Mikroskops und der fswebcam-Software wird nun zunächst einfach ein Einzelfoto gemacht und als
Datei auf die SD-Karte gespeichert (im aktuellen Ordner):
$ fswebcam test1.jpg
Man kann nun die Auflösung des resultierenden Fotos noch entsprechend seinen Wünschen anpassen, in dem
ein weiterer Parameter übergeben wird:
$ fswebcam -r 800x600 test2.jpg
Wenn einen das kleine Banner am unteren Ende des Bildes stört, dann kann dies mit einem weiteren Parameter
im resultierenden Foto entfernt werden:
$ fswebcam -r 800x600 --no-banner test3.jpg
Zum Aufnehmen von Videofilmen über das USB-Mikroskop benötigt man weitere Software für den RPi:
$ sudo apt-get install ffmpeg
Nun kann man ein erstes Video aufnehmen lassen:
$ ffmpeg -t 30 -f v4l2 -framerate 25 -video_size 640x80 -i /dev/video0 micro.mp4
Der Parameter -t
gibt die Anzahl an Sekunden an, die die Aufnahme dauern soll.
Falls ffmpeg auf dem RPi nicht verfügbar sein sollte, dann kann die Videoaufnahme alternativ auch
folgendermaßen gemacht werden:
$ sudo apt-get install libav-tools
$ avconv -t 30 -f video4linux2 -i /dev/video0 micro.avi
Mit dem RPi-Kamera-Modul habe ich schon Zeitrafferaufnahmen
gemacht, hier gibt es mehrere Möglichkeiten.
Hinweis: mit meinem Mikroskop hat es immer wieder Fehlermeldungen beim Speichern der Einzelfotos gegeben,
die jedoch mit den zusätzlichen Parametern -p YUYV -d /dev/video0
behoben wurden.
Für kürzer angelegte Zeitraffer-Aufnahmen (z.B. 1/10s) wird zunächst ein Bash-Script
(~/microscope/microscope-loop.sh) mit folgendem Inhalt erstellt:
#!/bin/bash
while :; do
DATE=$(date +%Y%d%m_%H%M%S)
fswebcam-p YUYV -d /dev/video0 -r 800x600 --no-banner tl_$DATE.jpg
sleep 10
done
Dieses Script muss noch ausführbar gemacht werden:
$ chmod +x microscope-loop.sh
und kann dann als Hintergrund-Job ausgeführt werden (damit man nicht die ganze Zeit eingeloggt sein muss)
$ nohup ./microscope-loop.sh &
Zunächst wird ein Bash-Script (~/microscope/microscope-frame.sh) mit folgendem Inhalt erstellt:
#!/bin/bash
DATE=$(date +"%Y-%m-%d_%H%M%S")
fswebcam-p YUYV -d /dev/video0 -r 800x600 --no-banner ~/microscope/tl_$DATE.jpg
Dieses Script muss noch ausführbar gemacht werden:
$ chmod +x microscope-frame.sh
Jetzt wird Crontab konfiguriert, ein
Dienst, der Scripte in regelmäßigen Zeitabständen ausführen kann (hilfreich ist hierbei auch
CronGuru):
$ crontab -e
Nun wird folgende Zeile hinzugefügt:
* * * * * ~/microscope/microscope-frame.sh 2>&1
Nun wird jede Minute das Script aufgerufen und damit ein Einzelfoto aufgenommen und entsprechende gespeichert.
Natürlich kann man Crontab auch für komplett andere Zeit-Intervalle konfigurieren.
Um aus den Einzelbildern dann nach der Langzeitaufnahme ein Zeitraffer-Video zu erstellen, bieten sich mehrere Möglichkeiten an (je nachdem, ob ffmpeg verfügbar ist):
Man wechselt in den Ordner mit den Einzelaufnahmen und führt folgenden Befehl aus:
$ cat *.jpg | ffmpeg -r 30 -f image2pipe -i - timelapse.mkv
wobei hier -r 30
eine Framerate von 30fps angibt.
Optional wird die Sequenz aus Einzelbilden umbenannt, damit sie später besser weiterverarbeitet werden kann:
$ ls *.jpg | awk 'BEGIN { a=0 }{printf "mv %s img%04d.jpg\n", $0, a++}' | bash
Nun wir das Video aus den einzelnen Fotos erstellt:
$ avconv -i img%4d.jpg -r 30 -vcodec libx264 -vf scale=800x600 timelapse.mp4
Statt einem Video-Format lässt sich auch ein animiertes GIF (z.B. zum Einbetten in eine Website) erstellen:
$ cat *.jpg | ffmpeg -r 3 -f image2pipe -i - -lavfi "setpts=3*PTS" -y timelapse.gif
Weitere Informationen zur Erstellung animierter GIFs:
High quality GIF with FFmpeg