Hallo Zusammen,
ich bin mir nicht sicher, ob es hier hergehört oder lieber unter Tutorials, da ich von meinem Scripten jedoch nie behaupten würde das diese Fertig sind Poste ich das mal lieber hier. Bitte verschieben, wenn es woanders besser aufgehoben ist.
Ich hab mittels einer Webcam von einer Baustelle über 2 Jahre lang alle 10 Minuten ein Bild gemacht. Wie das so ist, wenn man das das erste Mal macht, hab ich gleich mehrere dumme Entscheidungen getroffen. 10 min über mehrere Jahre ist ein viel zu kleiner Intervall und Fotos von einer dunklen Bausstelle bei Nacht zu machen ist für das Ziel eines schönen Timelaps Videos vom Bau keine Hilfe.
Dass ich dann noch in Motion Eye die Dateinamen nicht Ordentlich eingestellt hatte ist dann noch die Kirsche auf dem Eis....
Naja jedenfalls saß ich da jetzt mit rund 64.000 Fotos wovon viele einfach nur schwarz waren bzw. für ein Timelapsviedeo nicht Frage kamen. Da mit den Bilddaten (exif, oder Dateiname, Dateizeitstempel usw.) keine Sortierung möglich war machte ich mich auf die Suche wie man Schwarze Bilder einfach entfernen könnte. Da ich dazu einfach nichts gefunden habe außer verweise, auf teure Software, welche es ja dann eh nicht für mich als Linuxnutzer gibt, musste ich das anders lösen.
Nach vielem hin und her Probieren hab ich das folgenden Script mit ImageMagick zusammen gebastelt. Da ich Bash-Scripte eigentlich sehr selten nutze und das Schreiben dieser bei mir meist aus 50% Google-Fragen besteht behupte ich jetzt nicht das es ein Wunderscript ist. Es hat aber mein Problem perfekt gelöst und da ich es hoffentlich nie wieder brauche, aber irgendwer da draußen sicher auch schon so dumme Einstellungen wie ich vorgenommen hat möchte ich es gern hier Teilen. Wer es verbessern kann, immer gern, dann kann ich sicher was dabei lernen.
#!/usr/bin/sh
# Verwendung auf eigenes Risiko. Der Autor weiß selbst nicht was er tut ;-)
# Mit diesem Script werden Bilder in einem Ordner QUELLE auf Ihren Farbwert mit
# ImageMagick (Identify) untersucht. Siehe: https://imagemagick.org/script/escape.php
# Auf Basis des SCHWELLWERTS werden die Bilder bei Überschreiten des SCHWELLWERTS nach ZIEL kopiert bei Unterschreitung übersprungen
# Verzeichnispfad samt * und Dateiendung
QUELLE=/DATEIPFAD/MIT/BILDERN/*jpg
# Verzeichnis für die Ausgabe der Bilder
ZIEL=/DATEIPFAD/ANGEBEN/Scriptausgabe/
# Schwellwert bei welchem die Kopierentscheidung getroffen werden soll
# kann mittels Beispielbilder über die Shell mittels "identify -format %[colors] DATEIPFAD"
# ermittelt werden
SCHWELLWERT=11500
# Statistikwerte um den Überblick zu behalten ist hier keine Änderung Nötig
STATS=1
STATS2=1
for DATEI in $QUELLE #for Schleife zur Auswahl der Datein
do
FARBEN=$(identify -format %[colors] $DATEI) # Feststellen der Farbwerte
echo "Farben: $FARBEN" # Ausgabe des Farbwerts
if [ ${FARBEN} -le $SCHWELLWERT ] # Prüfung ob Farbwert kleiner als SCHWELLWERT
then
((STATS2++)) # Nicht Kopieren, wenn kleiner
echo "Übersprungen"
else
cp $DATEI $ZIEL # Kopieren, wenn Größer
echo "Bild Nr $STATS kopiert"
((STATS++))
fi
done
echo "Das war es! Hoffen wir es hat gelappt ;-) Es sollten $STATS Bilder nach $ZIEL kopiert worden sein. Dabei wurden $STATS2 Bilder nicht Kopiert."
exit
Display More