Jump to content

Featured Replies

Geschrieben

Das gibt mir die jetzt die „gerundeten” Brennweiten aus, aber nicht die Anzahl davor und nicht „ mm” danach. Ich probiere herum, aber ich komm nicht hin.

  • Antworten 50
  • Aufrufe 5,8k
  • Created
  • Letzte Antwort

Top Posters In This Topic

Posted Images

Geschrieben
vor 39 Minuten schrieb Subhash:

Das gibt mir die jetzt die „gerundeten” Brennweiten aus, aber nicht die Anzahl davor und nicht „ mm” danach. Ich probiere herum, aber ich komm nicht hin.

Ich ahne schon, was da los ist. Wenn ich zu Hause bin, werde ich noch mal einen Blick werfen.

Wäre es insgesamt nicht sinnvoll, die Rundung vor der Statistik laufen zu lassen?

Geschrieben
vor 9 Minuten schrieb Grinzold:

Wäre es insgesamt nicht sinnvoll, die Rundung vor der Statistik laufen zu lassen?

Ja.

Geschrieben
vor 51 Minuten schrieb Subhash:

Ja.

exiftool -q -q -s -s -s -EXIF:FocalLength *.dng | (while read l u ;do echo -n "$n " ; echo "round($l)" | bc -l ~/Desktop/bc_round.bc; done ) | sort -n | uniq -c

Das hat jetzt bei mit gut funktioniert. Jetzt noch in ein passendes Skript und das Ganze läuft auch aus der tcsh.

 

bearbeitet von Grinzold
Ding statt Ping :-))))

Geschrieben

Wenn ich

exiftool -q -q -s -s -s -EXIF:FocalLength *.dng | sort -n | uniq -c

aus der bash aufrufe bekomme ich falsche Werte! Nämlich

Zitat

   1 25.0 mm
   3 70.0 mm
   4 149.0 mm

statt:

Zitat

   1 25.0 mm
   3 70.0 mm
   4 149.0 mm
   3 300.0 mm

Die letzte Zeile fehlt also. Rufe ich dagegen mit meinem Rundungsskript

exiftool -q -q -s -s -s -EXIF:FocalLength *.dng | (while read l u ;do echo -n "$n " ; echo "round($l)" | bc -l ~/Desktop/bc_round.bc; done ) | sort -n | uniq -c

auf, dann stimmt’s! (Nur dass eine Rundung bei 4 Werten sinnlos ist. War ja nur ein Test.) Es stört mich noch, dass die "mm" verschwunden sind.

Ich versuche es jetzt einmal mit 1.500 Fotos.

bearbeitet von Gast

Geschrieben

Das dauert ziemlich lange, bei mir 5 min.

Mein Rundungsskript macht mich noch nicht so recht glücklich. Immerhin habe ich eine Ausgabe von 1.450 Fotos von 87 auf 45 Zeilen zusammengefasst, aber die Brennweitenbereiche sind nicht so sehr sinnvoll. Es macht zur Zeit:


für x
  5-14: Schrittweite 1 mm
 15-26: Schrittweite 2 mm
 27-41: Schrittweite 3 mm
 42-57: Schrittweite 4 mm
 58-78: Schrittweite 5 mm
 79-103: Schrittweite 6 mm
104-134: Schrittweite 7 mm
135-176: Schrittweite 8 mm
177-233: Schrittweite 9 mm
ab 234: Schrittweite 10 mm

Es lautet:

/* Runden in Schritten, die mit zunehmender Zahl x größer werden: */

define round(x) {
/* a zum kaufmännischen Runden: */
a=0.5
/* scale begrenzt die Anzahl der Kommastellen (dabei keine Rundung): */
scale=1
/* s ist die Schrittweite der Rundung, abhängig von der eingegebenen Zahl: */
s=x/(9+x/15)+a
scale=0
s=s/1
scale=1
y=x/s+a /* x < 5 ergibt Division durch 0! */
scale=0
return y/1*s
}

 

Geschrieben

Wenn ich versuche, die „mm” dazuzuschreiben, z.B. im Klammerausdruck:

(while read l u ;do echo -n "$n " ; echo "round($l)" ; echo " mm" | bc -l ~/Desktop/bc_round.bc; done )

oder so:

(while read l u ;do echo -n "$n " ; echo "round($l)" ; echo " $u" | bc -l ~/Desktop/bc_round.bc; done )

wird die Funktion nicht ausgeführt, sondern angeschrieben und die Sortierung fehlt:

   4  round(149.0)
   1  round(25.0)
   3  round(300.0)
   3  round(70.0)
  11 0

Dafür gibt’s unten eine Extrazeile. Es sind 11 DNGs in diesem Verzeichnis, das stimmt, und sonst nichts.

„Seine Welt ist voller Wunder”, wie die Werbung einst sagte (und wir Schüler als Spott übernahmen).

Geschrieben
vor 4 Minuten schrieb Subhash:

Wenn ich versuche, die „mm” dazuzuschreiben, z.B. im Klammerausdruck:


(while read l u ;do echo -n "$n " ; echo "round($l)" ; echo " mm" | bc -l ~/Desktop/bc_round.bc; done )

oder so:


(while read l u ;do echo -n "$n " ; echo "round($l)" ; echo " $u" | bc -l ~/Desktop/bc_round.bc; done )

wird die Funktion nicht ausgeführt, sondern angeschrieben und die Sortierung fehlt:


   4  round(149.0)
   1  round(25.0)
   3  round(300.0)
   3  round(70.0)
  11 0

Dafür gibt’s unten eine Extrazeile. Es sind 11 DNGs in diesem Verzeichnis, das stimmt, und sonst nichts.

„Seine Welt ist voller Wunder”, wie die Werbung einst sagte (und wir Schüler als Spott übernahmen)

Vergiss die 'mm'... Die kann man am Ende wieder dran hängen. Kein allgemeines Rechen-Werkzeug wird mit Einheiten etwas anfangen können.

Von welchem Betriebssystem reden wir hier?

 

Geschrieben

Mac OS X 10.7.5

Geschrieben
vor 3 Minuten schrieb Subhash:

Mac OS X 10.7.5

Das mag evtl. die eine oder andere Unstimmigkeit erklären... Hier Linux (Ubuntu 14.10 lts und Debian).

Geschrieben
vor 52 Minuten schrieb Subhash:

Das dauert ziemlich lange, bei mir 5 min.

Mein Rundungsskript macht mich noch nicht so recht glücklich. Immerhin habe ich eine Ausgabe von 1.450 Fotos von 87 auf 45 Zeilen zusammengefasst, aber die Brennweitenbereiche sind nicht so sehr sinnvoll. Es macht zur Zeit:

Wenn du es sowieso in ein Skript auslagerst, dann baue dir doch if-Anweisungen mit den Brennweitenbereichen ganz nach deinem Geschmack zusammen ... dann läuft's auch schneller.

Viele Grüße, Alex

Geschrieben
vor 4 Minuten schrieb AKauffmann:

Wenn du es sowieso in ein Skript auslagerst, dann baue dir doch if-Anweisungen mit den Brennweitenbereichen ganz nach deinem Geschmack zusammen ... dann läuft's auch schneller.

Das ist sicher sinnvoll. (Hat auch schon TKI vorgeschlagen.) Wie lautet denn da die Syntax? Ich kenne bc nicht.

Geschrieben

Danke, aber ich hab's in der Manpage nachgelesen mit „else if” probiert und bekam parse errors. (Hab's mit einem Workaround gelöst. Jetzt fehlt nur noch „ mm”.) 

bearbeitet von Gast
Ergänzung

Geschrieben
vor 16 Stunden schrieb Subhash:

Danke, aber ich hab's in der Manpage nachgelesen mit „else if” probiert und bekam parse errors. (Hab's mit einem Workaround gelöst. Jetzt fehlt nur noch „ mm”.) 

Geht so:

else {

} if {

}

Die 'mm' kriegst du z. B. so: 

echo `bc -l ~/bc_round.bc <<< "round($l)"` mm

statt der Pipe

Also gesamt:

exiftool -q -q -s -s -s -EXIF:FocalLength *.dng  | ( while read l u ; do   echo `bc -l ~/bc_round.bc <<< "round($l)"` mm; done ) | sort -n | uniq -c

 

bearbeitet von Grinzold
Code ergänzt

Geschrieben

Super, funktioniert gut!
(Wer ORFs auslesen will, muss im Befehl oben statt „*.dng” „*.ORF” schreiben. Ausgelesen wird im momentan „gültigen” Verzeichnis, das mit „cd” gewechselt wird.)

Hier meine Rundungsfunktion, wie ich sie zur Zeit verwende:

/* Runden in Schritten, die mit zunehmender Zahl x größer werden: */

define round(x) {
/* a zum kaufmännischen Runden: */
a=0.5
/* scale begrenzt die Anzahl der Kommastellen (dabei keine Rundung): */
scale=1
/* s ist die Schrittweite der Rundung, abhängig von der eingegebenen Zahl: */
s = 50 /* y ≥ 150 */
if (x < 151) s = 10 /* 100 ≤ y ≤ 150 */
if (x < 95) s = 5 /* 20 ≤ y ≤ 95 */
if (x < 19) s = 3 /* 9 ≤ y ≤ 18 */
if (x < 9) s = 1 /* 0 ≤ y ≤ 8 */
y=x/s+a
scale=0
return y/1*s
}

 

bearbeitet von Gast

Geschrieben

Wenn ihr schon programmiert - warum dann nicht mit einer flexibleren Sprache? Ich hatte hier z.B. mal ein Python-Skript vorgestellt, das auch die Brennweiten der Altgläser aus der Stabi-Einstellung auslas und zusätzlich zu den Daten der Systemobjektive grafisch darstellte. Das dürfte mit Shellskripten schwierig werden.

Anbei mal ein nahezu selbsterklärender Vorschlag, der Python2.7 und die Module numpy, pylab und pyexiv2 voraussetzt. Man speichert das Skript als ascii-Datei mit der Endung *.py ab und macht es unter unixoiden Systemen ausführbar. Der Erhalt der Einrückungen ist wichtig- sie ersetzen einige der in anderen Sprachen üblichen Klammerschwärme. Anschliessend kann man dem Progrämmchen per Drag'n Drop oder Kommandozeile ein Verzeichnis übergeben und erhält ein Brennweitenhistogramm als Ergebnis. Das Skript sollte unter  Linux, Mac und Win laufen- leider nicht unter Android.

Brennstat3.pdf

Brennstat.png

Geschrieben
vor 2 Stunden schrieb rodinal:

Wenn ihr schon programmiert - warum dann nicht mit einer flexibleren Sprache? Ich hatte hier z.B. mal ein Python-Skript vorgestellt …

Ich habe von Python keine Ahnung …

vor 2 Stunden schrieb rodinal:

Anbei mal ein nahezu selbsterklärender Vorschlag,

Super, danke! Werde ich gleich ausprobieren!

Geschrieben

Also bei mir (Mac) ist mit Drag & Drop einmal nichts. Da wird das Verzeichnis einfach in den Ordner kopiert, in dem das Script liegt. (Das Script wurde ausführbar gemacht.)

Wie geht’s über die Kommandozeile (Terminal)?

Geschrieben
Zitat

ImportError: No module named pyexiv2

:classic_mellow:

Geschrieben
1 hour ago, Subhash said:

:classic_mellow:

Das Modul pyexiv2 ist nicht installiert. Kannst du nachholen mit dem Befehl:

pip install pyexiv2

Pip ist das universelle Installations- und Deinstallationsprogramm der Sprache Python. Geht unter Linux und Win prächtig - unter Mac theoretisch auch.

Übergabe per Kommandozeile:

Wenn du das Programm "Brennstat. py" genannt hast und das Verzeichnis "/usr/local/Bilder" untersuchen möchtest, gibst du im Terminal ein:

Brennstat.py  /usr/local/Bilder

Geschrieben

Tja, wie so oft ist das wieder einmal nicht so einfach:

Zitat

[...%] pip install pyexiv2
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 7, in <module>
    from pip import main
ImportError: No module named pip

Ich hatte es schon anders versucht:

Zitat

brew install pyexiv2
curl: (35) Unknown SSL protocol error in connection to downloads.sourceforge.net:443 
Error: Failed to download resource "scons"
Download failed: https://downloads.sourceforge.net/project/scons/scons/2.4.1/scons-2.4.1.tar.gz

 

Geschrieben

Irgendetwas scheint mit deiner Pfadsetzung nicht zu stimmen. Das ist schon merkwürdig, denn m.W. ist Python seit der Version 10.8 Teil des Mac-Betriebssystems (von dessen Feinheiten ich sonst wenig Ahnung habe). Da du den Homebrew-Installer erwähnst: Hast du evtl. eine zweite Python-Version nachinstalliert? Das könnte allerdings für ein ziemliches Chaos gesorgt haben.

Geschrieben

Nicht dass ich wüsste.

Aber genau diese Vorkommnisse sind es, die mich von allzu viel Open Source Abstand nehmen lassen. Was ich da schon Zeit verschissen habe …!

Geschrieben
4 hours ago, Subhash said:

 

Aber genau diese Vorkommnisse sind es, die mich von allzu viel Open Source Abstand nehmen lassen.

In diesem Fall solite dein Dank aber eher an Apple gehen. Wenn die begrüssenwerterweise Python in ihr Betriebssystem integrieren und das Tool pip installieren, sollte das auch anstandslos arbeiten. Und der 443-Fehler bei brew kommt auch aus dem Dilettantenstadel - aus anderen BS lässt sich der Link problemlos anklicken.

Wenn deim Mac schon bei solchen Kleinigkeiten versagt, betrachte meinen Tipp besser als nicht gegeben. Eigentlich schade - denn Python ist eine Sprache, die sich traditionell nie um Betriebssystemgrenzen gekümmert hat (und mir deswegen stets sympathisch war).

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Wer ist Online 0

  • Keine registrierten Benutzer online.

Wichtige Information

Wenn Sie diese Seite nutzen, stimmen Sie den Community-Regeln zu. Wir haben Cookies gesetzt, um die Bedienung des Forums zu verbessern. Du kannst deine Cookie-Einstellungen anpassen, andernfalls gehen wir davon aus, dass du damit einverstanden bist. Mehr Informationen in unserer Datenschutzerklärung

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.