Bilder periodisch speichern: Unterschied zwischen den Versionen
K (4 Versionen importiert: Import von michigreat.a.wiki-site.com) |
(kein Unterschied)
|
Aktuelle Version vom 19. Juni 2018, 18:48 Uhr
Allgemein
Hier wird beschrieben, wie in einem festgelegten Intervall Bilder von einem HTTP-Server oder einer Webcam bezogen werden können oder ein Screenshot gemacht werden kann. Jedes Bild - egal, woher es kommt - muss einen eigenen, eindeutigen Dateinamen haben. Am besten eignet sich hierfür die Uhrzeit und das Datum. Dieses kann man bei Linux mit Hilfe des Befehls /bin/date '+%Y%m%d_%H%M%S' ausgeben lassen, dies würde eine Ausgabe etwa wie 20140517_184823 erzeugen. Diese Ausgabe lässt sich, wenn man den Befehl, der die Ausgabe erzeugt, mit "`"-Zeichen (diese Zeichen lässt sich auf einer deutschen Standardtastatur unter Linux mit Umschalt+"'" (Taste zwischen "ß" und Rücktaste) erzeugen) einschließt als Teil eines Befehls verwenden. Außerdem kann dem Dateinamen noch ein Präfix vorangestellt werden (optional).
Tipp: Wenn die Sekunden im Dateinamen nicht benötigt werden, kann beim Datumsformatstring "%S" (Sekunden) auch weggelassen werden. Selbiges gilt natürlich auch für alle anderen Teile wie Minuten, Stunden und so weiter. Dann muss aber das Intervall entsprechend gewählt werden, sodass sichergestellt ist, dass es zu keinen Kollissionen kommt.
Bilder beziehen
Von einem entfernten HTTP-Server laden
while /bin/true; do wget http://URI -O prefix_`/bin/date '+%Y%m%d_%H%M%S'`.jpg; sleep 60; done;
Von Webcam beziehen
while /bin/true; do uvccapture -m -x640 -y480 -oprefix_`/bin/date '+%Y%m%d_%H%M%S'`.jpg; sleep 60; done;
Screenshots
while /bin/true; do import -window root prefix_`/bin/date '+%Y%m%d_%H%M%S'`.png; sleep 60; done;
Danach
Etwas ins Bild schreiben
Dateiname in Bilder schreiben oder aktuelle(s) Datum/Uhrzeit:
convert $PIC -font DejaVu-Sans -stroke yellow -pointsize 24 -draw "text 10,20 '$(date '+%F %T')'" $RESULT
Vergleichen
compare $PIC1 $PIC2 -compose Src -highlight-color Red -lowlight-color Black $DIFF
composite $PIC1 $PIC2 -compose difference $DIFF
convert $PIC1 $PIC2 -compose Difference -composite -colorspace gray $DIFF