• In eigener Sache!

    Liebe Mitglieder, liebe Besucher und Gäste
    ich weiß, es ist ein leidiges Thema, aber ich muss es ansprechen: Werbung, Werbeblocker und Finanzierung des Forums.
    Bitte hier weiterlesen ...

  • Neuer Partner: AkkuShop.de
    Akkus, Ladegeräte und mehr (nicht nur) für Digitalkameras und Drohnen
  • Nicht erreichbare Adressen im Benutzerkonto
    Wir bekommen zurzeit eine große Anzahl an E-Mails, die das System zum Beispiel als Benachrichtigungen an Nutzer verschickt,
    als unzustellbar zurück, weil z.B. die Adressen nicht erreichbar sind oder das Postfach gar nicht existiert.
    Stellt doch bitte sicher, dass die Benachrichtigungen, die ihr vom System erwartet, auch zugestellt werden können.
    Nicht erreichbare E-Mail-Adressen sind dazu wenig hilfreich.
    Danke!
  • Stimmt ab über die Sieger des DSLR-Forum Fotowettbewerbs April 2025.
    Thema: "Plastik (Kunststoff)"

    Nur noch bis zum 30.04.2025 23:59!
    Jeder darf abstimmen!
    Zur Abstimmung und Bewertung hier lang
  • Neuer Gutscheincode unseres Partners Schutzfolien24:
    DSLR-Forum2025
    Dauerhaft 10% Rabatt auf alle Displayschutzfolien und Schutzgläser der Eigenmarken
    "Upscreen", "Screenleaf", BROTECT" und "Savvies".
    Der Code ist für alle Geräteklassen gültig.
  • Unlauterer Verkäufer wieder unterwegs!

    Liebe Mitglieder,
    Florian Franzek, der seit Jahren mit verschiedensten Usernamen in allen möglichen Foren und auf etlichen Verkaufsplattformen auftritt,
    ist wieder hier im Forum und versucht, ehrliche Käufer zu betrügen.
    Wir können wenig tun, außer bei Bekanntwerden einer weiteren Registrierung eines Accounts für seine Machenschaften, diese umgehend zu sperren.
    Ich empfehle, bei Kontakt umgehend die Polizei einzuschalten.

WERBUNG

EXIF-Statistiken mit Linux

Fr4ggle

Themenersteller
Hi!

<EDIT:> Weiter unten gibts den neuesten Code, der kann auch mehr :top: </EDIT>

Mich hat neulich brennend interessiert, wie viele Fotos ich mit welcher Brennweite gemacht habe.

Nun habe ich mir den Spass gemacht, mit ein paar Zeilen die angehängte Grafik zu erzeugen.

Zum Finden aller .jpg Bilder (oder raw...) und auslesen der Brennweite verwende ich folgendes:
Code:
for i in `find . -name '*.jpg'` ;do  exiv2  pr $i 2>/dev/null | grep  Brennweite |   awk '/Brennweite/ {if ($3 > 9.0) print $3}' ;done > Brennweiten.txt

Hier werden gleich die Bilder aussortiert, die ich nicht mit meiner SLR gemacht haben kann (Brennweite > 10). Man könnte statt dessen auch einfach nach dem Kameramodell suchen lassen.....


Zum Erzeugen der Grafik:
Code:
gnuplot -e "set size ratio 0.5; set style data histogram; set style fill solid border -1; set boxwidth 2 absolute; set tics out; set tics scale 5,2; set mxtics 5; set mytics 2; set grid x y; set xlabel 'Brennweite';set ylabel '# Pics';set terminal png  20;set output 'Brennweite.png' ;plot 'Brennweiten.txt' using (\$1):(1) title '' smooth frequency with boxes;"

Natürlich kann man das mit allen Exif Daten machen, die einen interessieren, zB. wie viele Bilder mit welcher Blende


Zur Angabe welche Exif Daten gesucht werden sollen, muss man den entsprechenden Namen angeben, zB:

Dateiname : ./Städte/Salzburg/dsc02214.jpg
Dateigröße : 8336910 Bytes
MIME-Typ : image/jpeg
Bildgrõße : 4272 x 2848
Kamerahersteller: SONY
Kameramodell : DSLR-A700
Zeitstempel des Bildes: 2009:04:20 08:11:27
Bildnummer :
Belichtungszeit : 1/250 s
Blende : F8
Belichtungskontrolle: 0 EV
Blitz : Blitz nicht ausgelöst, automatisch
Blitzkontrolle :
Brennweite : 60.0 mm (35 mm äquivalent: 90.0 mm)
Entfernung des Motivs:
ISO Geschwindigkeit: 200
Belichtungsmodus: Automatisch
Messmodus : Mehr-Segment
Makromodus :
Bildqualität :
Exif-Auflösung : 4272 x 2848
Weißabgleich : Automatisch


Das ganze funktioniert so natürlich nur in einer Linux-Umgebung :ugly:

lG,
Michael
 
Zuletzt bearbeitet:
AW: Wie viele Bilder mit Brennweite x ???

Immer wieder geil, was man mit Kenntnis der Linux-Syntax doch innerhalb weniger Zeilen anstellen kann!
Top gemacht, Fr4ggle!

Aber auch Thx an Spice für den anderen Tip.
Ich guck mir das dann gleich auch mal an, was da mit meinen Bildern als Input rauskommt.
 
AW: Wie viele Bilder mit Brennweite x ???

Danke Spice für den Link!

Hab mir schon fast gedacht, dass es sowas für Windows gibt.
Damit gibts zumindest 2 Möglichkeiten, die einem offen stehn :top:

Leider kann man mit exposureplot nur jpegs analysieren, aber vielleicht kommt noch eine Erweiterung.

Wenn ich wieder mal motiviert bin, bau ich mal ein Script zusammen, das mehr kann....

lg
Michael
 
Zuletzt bearbeitet:
AW: Wie viele Bilder mit Brennweite x ???

Danke Uwe für den Link!
Die Auswahl für Windows wird größer.
Beide Progs sehen auf den ersten Blick sehr brauchbar aus.

lg
Michael
 
AW: Wie viele Bilder mit Brennweite x ???

Bin gerade am Erweitern auf Brennweite, Blende und Verschlusszeit.

Bzw. gibts dann eine Verision für das deutsche exiv2 und eine englische Version.

Bis heut Abend ;)

lg
Michael
 
AW: Wie viele Bilder mit Brennweite x?

Hi all,

Nachdem Gnuplot ein Einsehen hatte , und ich ein paar Bugs gefixt habe :ugly:, kann ich verkünden:
Unten stehender Code erzeugt 3 Diagramme (Verteilung von Brennweite, Blende und Verschlusszeit) aus allen JPG's aus allen Unterverzeichnissen.

Statt 'jpg' kann natürlich auch RAW, ARW, oder was auch immer Exif-Daten enthält durchsucht werden.

Code:
for i in `find . -iname '*.jpg'` ;do exiv2 pr $i 2>/dev/null | awk '{count = 0} { if ( $1 == "Brennweite"){if ($3 > 1.0) {printf $3; printf(" "); count++}}} {if ( $1 == "Belichtungszeit") { split($3, a, "/"); if (a[2]==""){a[2] = 1} $3=sprintf("%8.5f",a[1]/a[2]); printf $3 ; printf(" "); count++}}  {if ($1 == "Blende") {sub("F",""); printf $3; printf(" "); count++}} {if (count == 3) {printf("\n")}} END {if (count !=3)  {printf("\n")}  }' ;done > Exifs.txt


gnuplot -e "set size ratio 0.5; 
set style data histogram; 
set style fill solid border -1; 
set boxwidth 2 absolute; 
set tics out; 
set tics scale 5,2; 
set mxtics 5; 
set mytics 2; 
set grid x y; 
set xlabel 'Brennweite';
set ylabel '# Pics';
set terminal png  20;
set output 'Brennweite.png' ; 
set autoscale; 
plot 'Exifs.txt' using (\$3):(1) title '' smooth frequency with boxes; 

set output 'Verschlusszeiten.png'; 
set size ratio 0.4;
set style data histogram;
set style fill solid border -1;
set boxwidth 0.05 absolute;
set tics out;
set tics scale 2,1;
set xtics rotate by -90;
set grid x y;
set xlabel 'Verschlusszeit';
set ylabel '# Pics';
set terminal png  10;
set xrange [0.000125:60];
set logscale x;
set xtics ('1/8000' 0.000125, '1/6000' 0.00016, '1/4000' 0.00025, '1/3000' 0.00033, '1/2000' 0.0005, '1/1500' 0.00066, '1/1000' 0.001, '1/750' 0.00133, '1/500' 0.002, '1/350' 0.00285, '1/250' 0.004, '1/200' 0.005, '1/125' 0.008, '1/90' 0.01111, '1/60' 0.01666, '1/45' 0.02222, '1/30' 0.03333, '1/20' 0.05, '1/15' 0.06666, '1/10' 0.1, '1/8' 0.125, '1/6' 0.16666, '1/4' 0.25,'1/3' 0.33333,'1/2' 0.5,'0.7' 0.7,'1' 1,'2' 2,'4' 4,'5' 5,'8' 8,'10' 10,'15' 15,'20' 20,'25' 25,'30' 30, '40' 45,'45' 45,'64' 64); 
plot 'Exifs.txt' using (\$1):(1) title '' smooth frequency with boxes; 

set xrange [1:64];
set size ratio 0.4; 
set style data histogram; 
set style fill solid border -1; 
set boxwidth 0.01 absolute; 
set tics out; 
set tics scale 2,1; 
set xtics rotate by -45;
set mxtics 1; 
set mytics 2; 
set grid x y; 
set xlabel 'Blende';
set ylabel '# Pics';
set terminal png  10; 
set output 'Blenden.png'; 
set xtics ('1' 1,'1,1' 1.1, '1,2' 1.2,'1,3' 1.3,'1,4' 1.4,'1,6' 1.6,'1,7' 1.7,'1,8' 1.8,'2' 2,'2,2' 2.2,'2,5' 2.5,'2,8' 2.8,'3,2' 3.2,'3,5' 3.5,'4' 4,'4,5' 4.5,'4,8' 4.8,'5' 5,'5,6' 5.6,'6,3' 6.3,'6,7' 6.7,'7,1' 7.1,'8' 8,'9' 9,'10' 10,'11' 11,'13' 13,'14' 14,'16' 16,'18' 18,'20' 20,'22' 22,'32' 32,'45' 45,'64' 64); 
set logscale x;
plot 'Exifs.txt' using (\$2):(1) title '' smooth frequency with boxes;"


Anmerkung: Bei englischer exiv2 Version müssen die Exif-Namen umgeschrieben und Indizes angepasst werden beim 1. Script.
Werds beizeiten mal hochladen.

Viel Spass beim probieren.

lg
Michael

PS: Wenn ihr Fehler findet bitte schreiben. Perfekt sind andere :angel:
 
AW: Exif Statistiken mit Linux

das obere dürfte ja auch beim mac funktionieren, leider habe ich kein gnuplot installiert, und habe auch nicht vor es zu tun.

Aber es gibt doch sicherlich ne andere möglichkeit das beim mac zu machen?

Is there an app for it? *g*

Bisher mach ich das mehr oder weniger von Hand, lass die Photos mit iphoto nach Brennweiten sortieren und bastel mir dann in Numbers ein Diagramm
 
Hi,
Das script sollte auch auf dem Mac laufen, ja.

Was es allerdings für command line tools zur Erstellung von Grafiken gibt, weiß ich nicht.

Man (ich bezweifle, dass ich dazu Lust habe :evil:) kann natürlich auch anders die Grafiken generieren.
Da ich Gnuplot auf der Uni hatte, war es das das erste, was mir eingefallen ist ;)

lg
Michael
Hippodraw wäre ev. ein Programm der Wahl (in Verbindung mit Python):
http://www.slac.stanford.edu/grp/ek/hippodraw/index.html

..... oder auch Grace:
http://plasma-gate.weizmann.ac.il/Grace/


Zb: schreib ein C programm das xmgrace startet und online die statistik schreibt :)
dannn kannst du zuschauen, wie die balken wachsen.....
 
Zuletzt bearbeitet:
Eigentlich war ich auf der Suche nach einem Mac-App das Brennweiten Statistiken erstellt und nicht die Diagramme für das Skript erstellt ;) *g*
 
Hehe,
tjo, eine App dafür kenn ich nicht, wenns auf Linux aber nicht läuft, nehms ICH nicht :p

Im Grunde ist halt das Script die App.... dazu halt gnuplot installen.
Anders muss ich die App installen.
Seh grad das Problem nicht, aber das passiert Informatikern öfters :ugly:

la
Michael
 
Und weil so schön war, noch der Code für die, die auf Englisch unterwegs sind:

Code:
for i in `find . -iname '*.jpg'` ;do exiv2 pr $i 2>/dev/null | awk '{count = 0} { if ( $1 == "Focal"){if ($4 > 9.0) {printf $4; printf(" "); count++}}} {if ( $1 == "Exposure") {if ($2 == "time") { split($4, a, "/"); if (a[2]==""){a[2] = 1} $4=sprintf("%8.5f",a[1]/a[2]); printf $4 ; printf(" "); count++}} } {if ($1 == "Aperture") {sub("F",""); printf $3; printf(" "); count++}} {if (count == 3) {printf("\n")}} END {if (count !=3)  {printf("\n")}  }' ;done > Exifs.txt


gnuplot -e "set size ratio 0.5; 
set style data histogram; 
set style fill solid border -1; 
set boxwidth 2 absolute; 
set tics out; 
set tics scale 5,2; 
set mxtics 5; 
set mytics 2; 
set grid x y; 
set xlabel 'Focal length';
set ylabel '# Pics';
set terminal png  20;
set output 'Focal_length.png' ; 
set autoscale; 
plot 'Exifs.txt' using (\$3):(1) title '' smooth frequency with boxes; 

set output 'Exposure.png'; 
set size ratio 0.4;
set style data histogram;
set style fill solid border -1;
set boxwidth 0.05 absolute;
set tics out;
set tics scale 2,1;
set xtics rotate by -90;
set grid x y;
set xlabel 'Exposure';
set ylabel '# Pics';
set terminal png  10;
set xrange [0.000125:60];
set logscale x;
set xtics ('1/8000' 0.000125, '1/6000' 0.00016, '1/4000' 0.00025, '1/3000' 0.00033, '1/2000' 0.0005, '1/1500' 0.00066, '1/1000' 0.001, '1/750' 0.00133, '1/500' 0.002, '1/350' 0.00285, '1/250' 0.004, '1/200' 0.005, '1/125' 0.008, '1/90' 0.01111, '1/60' 0.01666, '1/45' 0.02222, '1/30' 0.03333, '1/20' 0.05, '1/15' 0.06666, '1/10' 0.1, '1/8' 0.125, '1/6' 0.16666, '1/4' 0.25,'1/3' 0.33333,'1/2' 0.5,'0.7' 0.7,'1' 1,'2' 2,'4' 4,'5' 5,'8' 8,'10' 10,'15' 15,'20' 20,'25' 25,'30' 30, '40' 45,'45' 45,'64' 64); 
plot 'Exifs.txt' using (\$1):(1) title '' smooth frequency with boxes; 

set xrange [1:64];
set size ratio 0.4; 
set style data histogram; 
set style fill solid border -1; 
set boxwidth 0.01 absolute; 
set tics out; 
set tics scale 2,1; 
set xtics rotate by -45;
set mxtics 1; 
set mytics 2; 
set grid x y; 
set xlabel 'Aperture';
set ylabel '# Pics';
set terminal png  10; 
set output 'Aperture.png'; 
set xtics ('1' 1,'1,1' 1.1, '1,2' 1.2,'1,3' 1.3,'1,4' 1.4,'1,6' 1.6,'1,7' 1.7,'1,8' 1.8,'2' 2,'2,2' 2.2,'2,5' 2.5,'2,8' 2.8,'3,2' 3.2,'3,5' 3.5,'4' 4,'4,5' 4.5,'4,8' 4.8,'5' 5,'5,6' 5.6,'6,3' 6.3,'6,7' 6.7,'7,1' 7.1,'8' 8,'9' 9,'10' 10,'11' 11,'13' 13,'14' 14,'16' 16,'18' 18,'20' 20,'22' 22,'32' 32,'45' 45,'64' 64); 
set logscale x;
plot 'Exifs.txt' using (\$2):(1) title '' smooth frequency with boxes;"

Rein ins .sh file damit :)
Ich hoffe, es funzt...

lg,
Michael
 
@Fraggle:

ah wird scho gehn :D

----

Für alle die es interessiert:

Es gibt auch für C/C++ eine libexif. Somit ist man hier nicht nur auf die Bash beschränkt, sondern kann sich auch beim C Programmieren austoben :lol:
 
Erstmal vielen Dank dafür!
Es klappt bei mir leider nicht... exiv2 und gnuplot hab ich installiert, aber wenn ich das Skript in nem Ordner mit jgps ausführe, erstellt er erst fleißig eine Exifs.txt , aber dann das:

blablubla@rechner:~/Desktop/ordner$ ./skript.sh
Cannot open load file '-e'
line 0: util.c: No such file or directory

Das Problem sitzt hier sicherlich vor dem Bildschirm, hab überhaupt keine Erfahrung mit shell-Skripten und mit gnuplot bisher auch nur Erfahrung über Octave gemacht :)
Also hat einer ne Idee, was das heißt bzw. was ich anders machen muss?
 
Hallo blablubla,

cool, dass es einer benützt.

Gib bitte mal
gnuplot --help
ein, und schau obs dort eine Option -e über haupt gibt.
Bzw. welche Version benützt du.
Sitz gerada vor einer Windoof-Dose und kann das selber nicht nachprüfen.


Im Zweifelsfall das probieren:

Statt dem ursprünglichem Aufruf für gnuplot so ändern:

Code:
echo "set size ratio 0.5; 
set style data histogram; 
.............." | gnuplot


lg
Michael
 
Perfekt, Danke! Das zweite klappt nun. Laut manpage gibt es kein -e für mein gnuplot 4.2. Wie müsste der Anfang denn lauten, wenn man von einem Ordner ausgehend alle Unterordner durchlaufen wollte? :) Das käme meiner Fotoorganisierung sehr entgegen und ich könnte alle Fotos durchlaufen. Ich suche schon länger nach so einer Möglichkeit, wegen evtl. Aufrüstung der Technik :)
 
WERBUNG
Zurück
Oben Unten