Forum: PC-Programmierung HDR Dateien suchen, die innerhalb weniger Sekunden aufgenommen wurden


von Werner A. (homebrew)


Lesenswert?

Ich habe im Urlaub mal wieder viele Bilder gemacht und bin gerade dabei 
mir Bilder rauszusuchen, die zu einer Belichtungsreihe gehören (für HDR 
Photos)
Im Prinzip suche ich ne Möglichkeit Bilder, die innerhalb von 2 Sekunden 
aufgenommen wurden in jeweils ein Unterverzeichnis zu schieben.
Hat jemand ne Idee, wie ich das mit einer Batchdatei, shell-skript oder 
ähnlich lösen kann?

von Pink S. (pinkshell)


Lesenswert?

Mach's von Hand. 10000 Bilder hast du in einer Stunde durchgescrollt. In 
der Zeit hast Du kein Skript geschrieben, getestet, debugged und 
ausgeführt.

von STK500-Besitzer (Gast)


Lesenswert?

Man könnte eine Directory-Ausgabe in eine Textdatei umleiten und diese 
dann in eine Tabellenkalkulation-Software freier Wahl importieren und 
dort über eine Abfrage (bei Excel nennt sich das Ding "Wenn"...) die 
einzelnen Datume (heisst das so?) vergleichen lassen und die kleinste 
Differenz anzeigen lassen.
3-10 Minuten dürfte sowas dauern...

von Werner A. (homebrew)


Lesenswert?

STK500-Besitzer schrieb:
> Man könnte eine Directory-Ausgabe in eine Textdatei umleiten

Gute Idee, leider gibt "dir" mir die Sekunden nicht mit an...

von Hamilton (Gast)


Lesenswert?

Mit ExifTool kannst du dir per Perl Scipt aus den Exifdaten z.B. 
Brennweite, Kameraorientierung, Aufnahmezeitpunkt und - soweit vorhanden 
- auch noch Standortkoordinaten und Blickrichtung herausziehen.
http://www.sno.phy.queensu.ca/~phil/exiftool/

Das sollte für ein ausreichend zuverlässiges Filter reichen. Falls das 
eine einmalige Aktion ist, s.o.

von Tom (Gast)


Angehängte Dateien:

Lesenswert?

Pink Shell schrieb:
> Mach's von Hand. 10000 Bilder hast du in einer Stunde durchgescrollt. In
> der Zeit hast Du kein Skript geschrieben, getestet, debugged und
> ausgeführt.

Und beim nächsten Urlaub dann wieder. Wie man mit fast 3 Bildern pro 
Sekunde das EXIF-Datum liest, Ordner anlegt und bei Bedarf verschiebt, 
möchte ich sehen.

Habe beim Abendessen etwas gebastelt (die Stunde kam inklusive Einlesen 
in nötige Module ungefähr hin). Das Ergebnis braucht python und PIL, hat 
keine Sicherheitsmaßnahmen gegen bösartige Dateinamen, muss unter 
Windows wahrscheinlich etwas angepasst werden und ist nur minimal 
getestet. Zur Vorsicht wird nichts verschoben, sondern es werden Befehle 
ausgegeben, die man in ein hinterher auszuführendes Shellscript umleiten 
kann. Aufruf mit
1
python 1.py /home/werner/ordnermitmeinenurlaubsfotos
Stil und Qualität dürfen gerne kritisiert werden

Grüße

von Tom (Gast)


Angehängte Dateien:

Lesenswert?

Wie immer sieht man den ersten Bug (das letzte File im Ordner wurde 
ignoriert) erst nach der Veröffentlichung :(

von Werner A. (homebrew)


Lesenswert?

Hallo Tom,
vielen Dank für das Skript. Da ich bisher nicht mit Python gearbeitet 
habe musste ich mich erst was einlesen.
Wie du schon vermutet hast, benötigt das für Windows7 noch Anpassungen.

Ich habe mir portable Python von hier installiert (enthält dann auch 
PIL)
http://www.portablepython.com/wiki/PortablePython2.7.2.1
Dann habe ich den PyScripter gestartet, dein Skript reinkopiert, die 
Kommandozeilenparameter auf C:\Test gesetzt und gestartet.

Folgende Ausgabe:
1
Command Line : c:\Test
2
# ignoring c:\Test\IMG_4490.JPG
3
# ignoring c:\Test\IMG_4491.JPG
4
# ignoring c:\Test\IMG_4492.JPG
5
mkdir "c:\Test/foo_00001"
6
mv "c:\Test\IMG_4493.JPG" "c:\Test/foo_00001/"
7
mv "c:\Test\IMG_4494.JPG" "c:\Test/foo_00001/"
8
mv "c:\Test\IMG_4495.JPG" "c:\Test/foo_00001/"
9
# ignoring c:\Test\IMG_4497.JPG
10
# ignoring c:\Test\IMG_4498.JPG

Suchen und Auswählen der passenden Dateien funktioniert also schon. 
Leider gibt es anscheinend Probleme mit dem BackSlash bzw. Schrägstrich.
Also habe ich den Schrägstrich ausgetauscht
1
           foldername = '%s/foo_%05d' % (wd, num)
gegen das getauscht.
1
           foldername = '%s\foo_%05d' % (wd, num)

Dann wird aber der Backslash ignoriert
1
*** Remote Interpreter Reinitialized  ***
2
>>> 
3
Command Line : c:\Test
4
# ignoring c:\Test\IMG_4490.JPG
5
# ignoring c:\Test\IMG_4491.JPG
6
# ignoring c:\Test\IMG_4492.JPG
7
mkdir "c:\Testoo_00001"
8
mv "c:\Test\IMG_4493.JPG" "c:\Testoo_00001/"
9
mv "c:\Test\IMG_4494.JPG" "c:\Testoo_00001/"
10
mv "c:\Test\IMG_4495.JPG" "c:\Testoo_00001/"
Geht also auch nicht...
Zusätzlich werden die Befehle auch nicht vom Betriebssystem ausgeführt.
(Mir ist klar, dass ich mv noch gegen move austauschen muss, aber der 
mkdir geht ja auch nicht)

von command.com (Gast)


Lesenswert?

Werner A. schrieb:
> Zusätzlich werden die Befehle auch nicht vom Betriebssystem ausgeführt.
> (Mir ist klar, dass ich mv noch gegen move austauschen muss, aber der
> mkdir geht ja auch nicht)

Liegt daran:

Tom schrieb:
> Zur Vorsicht wird nichts verschoben, sondern es werden Befehle
> ausgegeben, die man in ein hinterher auszuführendes Shellscript umleiten
> kann.

Also: Ausgabe des Programms in eine (.BAT)-DAtei schreiben lassen, und 
die dann prüfen und ausführen.

von Tom (Gast)


Lesenswert?

Hallo,

der \ escaped traditionell das nächste Zeichen, damit er im String 
erhalten bleibt, muss er selbst escaped werden, also z.B.
1
foldername = '%s\\foo_%05d' % (wd, num)

Statt der .BAT kann man evtl. auch Befehle mit os.system() ausführen, 
statt sie mit print auszugeben.

Das DELTA in der korrigierten Version muss auch angepasst werden, falls 
Du das nicht schon selbst gesehen hast, ich hatte keinen Bilderordner 
mit Fotos im Sekundenabstand zum testen.

von Werner A. (homebrew)


Angehängte Dateien:

Lesenswert?

Hallo Tom,
nochmals vielen Dank für deine tolle Arbeit.
Ich habe gerade alle Bilder wegsortiert (wegsortieren lassen)
Wieder 'nen bischen was gelernt und für den nächsten Urlaub vorbereitet 
;-)


Wenn es noch jemand gebrauchen kann, hier die notwendigen Schritte
 - http://www.portablepython.com/wiki/PortablePython2.7.2.1 
herunterladen
 - nach c:\Portable installieren
 - HDRsearch.py nach c:\Portable\Portable Python 2.7.2.1\MyApps kopieren
 - HDR_prepare.bat in das Verzeichnis mit den Bildern kopieren und 
aufrufen
Es werden hier keine Dateien verschoben, sondern nur die Datei 
HDR_move.bat erzeugt.
 - Die Datei HDR_move.bat mit nem Editor öffnen und überprüfen, z.B. 
immer 3 Bilder verschoben werden sollen
 - Wenn die Datei HDR_move.bat dann aufgerufen wird werden 
Unterverzeichnisse angelegt und die entsprechenden Bilder verschoben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.