SonyUserforum
Amazon
Forum für die Fotosysteme von Sony und KonicaMinolta
  SonyUserforum - Forum für die Fotosysteme
von Sony und KonicaMinolta
 
Registrieren Galerie Objektiv-Datenbank Kalender Forenregeln Alle Foren als gelesen markieren

Startseite » Forenübersicht » Kreativbereich » Nach der Aufnahme » [Mac/Linux/Win] Visualizer of AF data from Sony cameras (JPEG&ARW EXIFs)
Antwort
 
Themen-Optionen Ansicht
Alt 03.05.2017, 08:11   #1
meshua
 
 
Registriert seit: 08.08.2005
Ort: Ocean Ave, San Francisco, CA 94112
Beiträge: 5.473
[Mac/Linux/Win] Visualizer of AF data from Sony cameras (JPEG&ARW EXIFs)

Guten Morgen,

Dies ist eine Fortsetzung aus dem A9-Thread, wo "herby1961" ein Tool (Python-Script) zur Visualisierung von AF-Fokuspunkten in SONY JPEG/ARW Dateien vorgestellt hat. Danke hierfür!!!

Installation und Nutzung

In diesem separaten Thread soll es um einen Erfahrungsaustausch bei Verwendung des Tools "Visualizer of AF data from Sony cameras" gehen. Das Script ist quelloffen und auf GitHub herunterladbar. Es wird bisher erfolgreich unter Windows, MacOS und Linux (Ubuntu 16.04.2) verwendet.

Windows 7:
  1. Phyton von https://www.python.org/downloads/release/python-360/ installiert
  2. https://bootstrap.pypa.io/get-pip.py local abgespeichert.
  3. durch doppelklick die Datei get-pip.py ausgeführt (nach installation von Python)
  4. auf einem Windows Command Prompt die Kommandos:
    Code:
    pip install matplotlib
    pip install rawpy
    pip install pillow
  5. Phil Harvey's EXIFTool binary (named exiftool.exe) to be placed in the same folder as afv.py script. Exiftool download (http://www.sno.phy.queensu.ca/~phil/exiftool/)
  6. Das Phyton Script https://github.com/SK-Hardwired/s_afv
    Mittels Copy and Paste in einen Texteditor kopiert und ins selbe Verzeichnis wie Punkt 5.)
  7. afv.py durch doppelklick starten.

(Quelle)


MacOS:
  1. Python 3.4+ herunterladen: Python 3.6.1 - Mac OS X 64-bit/32-bit installer (for Mac OS X 10.6 and later), Installationsanleitung folgen. Python 3.x wird parallel zum mit MacOS ausgelieferten Python 2.7 installiert und kann anschließend mit dem Kommando "python3" direkt aufgerufen werden.
  2. https://bootstrap.pypa.io/get-pip.py lokal abspeichern (z.B. im eigenen Benutzerverzeichnis ./Applications/AFV) und mit folgendem Aufruf nach Python3 installieren: "sudo python3 ./Applications/AFV/get-pip.py" (via 'sudo', weil zur Installation administrative Rechte benötigt werden - sonst funktioniert es nicht ohne Fehler.)
  3. Jetzt nacheinander die für das Script erforderlichen Pakete installieren: Dies geschieht am einfachsten mit PIP, weshalb dies im Schritt zuvor installiert wurde. Um die PIP-Version der Python3.x Installation anzusprechen, erfolgt der Aufruf via 'pip3':
    Code:
    pip3 install matplotlib
    pip3 install rawpy
    pip3 install pillow
  4. Phil Harvey's EXIFTool für MacOS herunterladen (Mac OS X Package: ExifTool-10.51.dmg (2.6 MB)) und in den gleichen Ordner (./Applications/AFV/) wie das noch gleich herunterzuladende eigentliche Script 'afv.py' platzieren
  5. Abschließend noch das eigentliche Phyton Script für die Fokuspunkt-Darstellung herunterladen: https://raw.githubusercontent.com/SK.../master/afv.py und ebenfalls in den zuvor angelegten Ordner "./Applications/AFV/" speichern.
  6. Das Script muss noch etwas angepasst werden. Folgende Zeile zu Beginn einfügen:
    Code:
    import matplotlib
    matplotlib.use('TkAgg')
    um Mathplot fehlerfrei nutzen zu können. Außerdem ist im Script noch ein "exiftool.exe" Aufruf vorhanden, wo zumindest der ".exe"-Suffix entfernt werden sollte.
  7. Das Script kann jetzt ausgeführt werden und eine minimalistische GUI sollte erscheinen: "python3 ./Applications/AFV/afv.py"

Linux:

Siehe MacOS.
  • Zusätzlich muss (gegebenenfalls) noch die "libraw" Bibliothek von Python installiert werden (Danke an RainerWP für diesen Hinweis!):
    Code:
    sudo apt-get install libraw-dev

Troubleshooting

(1) Problem (MacOS/Linux): Beim Laden eines ARW oder JPEG Files (A7MII) kommt es leider zu einer Exception im zusätzlich eingebundenen Paket 'Tkinter':
Code:
Exception in Tkinter callback
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/tkinter/__init__.py", line 1699, in __call__
    return self.func(*args)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/backends/backend_tkagg.py", line 420, in button_release_event
    FigureCanvasBase.button_release_event(self, x, y, num, guiEvent=event)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/backend_bases.py", line 1940, in button_release_event
    self.callbacks.process(s, event)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/cbook.py", line 554, in process
    proxy(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/cbook.py", line 416, in __call__
    return mtd(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/widgets.py", line 229, in _release
    func(event)
  File "./Applications/AFV/afv.py", line 72, in ofile
    self.start(F)
  File "./Applications/AFV/afv.py", line 136, in start
    tag,val = each.split(':',1) # '1' only allows one split
ValueError: not enough values to unpack (expected 2, got 1)
Ursache: "Exiftool" wird im Script an zwei Stellen mit einem unter MacOS nicht kompatiblem Parameter aufgerufen (",shell=True").
Lösung: Den o.g. Parameter aus dem Exiftool-Aufruf entfernen behebt das Problem, und "Exiftool" wird von nun an korrekt ausgeführt.

Soweit eine kurze Einführung zur Installation/Konfiguration und zum Erstaufruf von 'afv.py'.

Beste Grüße, euer meshua
__________________
Aktuelle Serie: Eun Kyung - A Late Summer Afternoon || San Francisco | Frankfurt | Hongkong: Google+ * IG * FB

Geändert von meshua (07.05.2017 um 22:42 Uhr) Grund: MacOS Installationsanleitung & Konfiguration ergänzt, Problemlösung ergänzt, Linux Installationshinweis ergänzt
meshua ist offline   Mit Zitat antworten
Sponsored Links
Alt 03.05.2017, 09:06   #2
herby1961
 
 
Registriert seit: 11.11.2015
Ort: Österreich - Niederösterreich
Beiträge: 390
Installation Windows 7

Ich hänge mal meine Installationsanleitung für Windows 7 auch hier rein:

1) Phyton von https://www.python.org/downloads/release/python-360/ installiert
2) https://bootstrap.pypa.io/get-pip.py local abgespeichert.
3) durch doppelklick die Datei get-pip.py ausgeführt (nach installation von Python)
4) auf einem Windows Command Prompt die Kommandos:
pip install matplotlib
pip install rawpy
pip install pillow
5) Phil Harvey's EXIFTool binary (named exiftool.exe) to be placed in the same folder as afv.py script. Exiftool download (http://www.sno.phy.queensu.ca/~phil/exiftool/)
6) Das Phyton Script https://github.com/SK-Hardwired/s_afv
Mittels Copy and Paste in einen Texteditor kopiert und ins selbe Verzeichnis wie Punkt 5.
7) afv.py durch doppelklick starten.

Unter Mac OSX habe ich auch kein Problem Python 3.6 parallel zu installieren. Aber danach macht es Probleme mit mittels "pip" nachzuinstallierenden Modulen. Die krieg ich momentan nicht in die 3.6 Version.

Beste Grüße
Herby
__________________
www.herbertgrabmayer.eu

Geändert von herby1961 (04.05.2017 um 04:38 Uhr)
herby1961 ist offline   Mit Zitat antworten
Alt 03.05.2017, 11:30   #3
NetrunnerAT
 
 
Registriert seit: 02.01.2008
Ort: Wien
Beiträge: 2.466
Ich bin so oder so dafür, dass wir ein Unterforum erstellen, wo wir solche Projekte zusammen tragen. Das macht es freundlicher für zukünftige Entwickler etc ...

Es wäre schade wenn so ein nützliches Projekt, irgend wann im See der Beiträge verschwindet!
NetrunnerAT ist offline   Mit Zitat antworten
Alt 03.05.2017, 17:22   #4
meshua

Themenersteller
 
 
Registriert seit: 08.08.2005
Ort: Ocean Ave, San Francisco, CA 94112
Beiträge: 5.473
MacOS Installationsanleitung & Konfiguration ergänzt. Leider läuft das Script immer noch nicht fehlerfrei...wer Ideen hat, was die Ursache sein könnte: lasst es uns alle wissen...

Viele Grüße, meshua
__________________
Aktuelle Serie: Eun Kyung - A Late Summer Afternoon || San Francisco | Frankfurt | Hongkong: Google+ * IG * FB
meshua ist offline   Mit Zitat antworten
Alt 03.05.2017, 21:01   #5
herby1961
 
 
Registriert seit: 11.11.2015
Ort: Österreich - Niederösterreich
Beiträge: 390
Zitat:
Zitat von meshua Beitrag anzeigen
MacOS Installationsanleitung & Konfiguration ergänzt. Leider läuft das Script immer noch nicht fehlerfrei...wer Ideen hat, was die Ursache sein könnte: lasst es uns alle wissen...

Viele Grüße, meshua
Hi meshua,

So wie es aussieht funktionert das Füllen des Bereichs "exifdata" durch das tool exiftool nicht sauber.

Wenn ich exiftool -a 20170501-15-27-31-A6509604.ARW manuell in dem Verzeichniss aufrufe bekomme ich folgenden output:

Code:
ExifTool Version Number         : 10.50
File Name                       : 20170501-15-27-31-A6509604.ARW
Directory                       : .
File Size                       : 24 MB
File Modification Date/Time     : 2017:05:01 15:27:30+02:00
File Access Date/Time           : 2017:05:03 21:41:08+02:00
File Inode Change Date/Time     : 2017:05:02 17:06:14+02:00
.........
der bereich "exifdata" wird dann Zeile für Zeile in folgender Schleife gelesen:

Code:
          for i,each in enumerate(exifdata):
            # tags and values are separated by a colon
            tag,val = each.split(':',1) # '1' only allows one split
            exif[tag.strip()] = val.strip()
Rot hervorgehoben habe ich den Code der jede Zeile des Bereichs "exifdata in dem ein Tag:Value Pair geteilt durch ":" erwartet werden in ein zwei Variable tag and val aufsplitten und in der nächsten zeile in einem Array "exif" speichern soll. Offensichtlich ist da nicht das erwartete Format. Damit steigt das Programm aus.

Irgendwas geht da offensichtlich beim Aufruf von exiftool schief und wird nicht reported.

Ich habe einen Kollegen der sich mit Python auskennt, den werde ich morgen mal fragen wie man das debuggen kann.

Grüße
Herby
__________________
www.herbertgrabmayer.eu

Geändert von herby1961 (03.05.2017 um 21:11 Uhr)
herby1961 ist offline   Mit Zitat antworten
Sponsored Links
Alt 03.05.2017, 23:01   #6
usch
 
 
Registriert seit: 16.08.2010
Beiträge: 18.830
Der Link ist kaputt. Besser: https://github.com/SK-Hardwired/s_afv


Zitat:
ValueError: not enough values to unpack (expected 2, got 1)
Da hat sich eine Zeile in die Daten gemogelt, die keinen Doppelpunkt enthält. Da das nicht aus dem regulären Output von exiftool stammen kann, muss das entweder eine Fehlermeldung sein, oder exiftool ist gar nicht aufgerufen worden. Ändere die Schleife mal so ab:

Code:
          for i,each in enumerate(exifdata):
            if ':' in each:
              # tags and values are separated by a colon
              tag,val = each.split(':',1) # '1' only allows one split
              exif[tag.strip()] = val.strip()
            else:
              print each
Das sollte dann die fehlerhafte(n) Zeile(n) ausgeben und ansonsten fehlerfrei laufen.
__________________
Any feature is a bug unless it can be turned off. (Heuer's Law, 1990)

Geändert von usch (03.05.2017 um 23:54 Uhr)
usch ist offline   Mit Zitat antworten
Alt 04.05.2017, 06:56   #7
herby1961
 
 
Registriert seit: 11.11.2015
Ort: Österreich - Niederösterreich
Beiträge: 390
Hallo Usch,

Vielen Dank für Deinen Input. Das hat mal gut weitergeholfen. Kleine Anmerkung unter Python 3.6 muss es

Code:
print (each)
sein.

Damit habe ich gesehen das die gesamte Hilfe von exiftool ausgegeben wird.

Damit wird exifdata ausgeführt

Code:
         exifdata = subprocess.check_output(['exiftool','-a',F],shell=True,universal_newlines=True,stdin=subprocess.PIPE,stderr=subprocess.PIPE)
aber offensichtlich ohne die Parameter -a und F aufgerufen.

das muss offensichtlich unter macOS anders parametriert werden als unter windows. Und damit sind wir bei der nächsten Herausforderung. Wie frägt man ab unter welchem Betriebssystem das Script läuft und löst den richtigen Aufruf aus?

Werde mal suchen, vielleicht hat in der Zwischenzeit wer eine Idee.

Grüße
Herby
__________________
www.herbertgrabmayer.eu
herby1961 ist offline   Mit Zitat antworten
Alt 04.05.2017, 07:52   #8
meshua

Themenersteller
 
 
Registriert seit: 08.08.2005
Ort: Ocean Ave, San Francisco, CA 94112
Beiträge: 5.473
Guten Morgen,

Zitat:
Zitat von usch Beitrag anzeigen
Der Link ist kaputt. Besser: https://github.com/SK-Hardwired/s_afv
Danke!!! Ist korrigiert.

Zitat:
Zitat von herby1961 Beitrag anzeigen
Hallo Usch,

Damit habe ich gesehen das die gesamte Hilfe von exiftool ausgegeben wird.

Damit wird exifdata ausgeführt

Code:
         exifdata = subprocess.check_output(['exiftool','-a',F],shell=True,universal_newlines=True,stdin=subprocess.PIPE,stderr=subprocess.PIPE)
aber offensichtlich ohne die Parameter -a und F aufgerufen.

das muss offensichtlich unter macOS anders parametriert werden als unter windows. Und damit sind wir bei der nächsten Herausforderung. Wie frägt man ab unter welchem Betriebssystem das Script läuft und löst den richtigen Aufruf aus?

Werde mal suchen, vielleicht hat in der Zwischenzeit wer eine Idee.
Interessant, zumal der Entwickler schrieb "it is Python script, actually, so you can try to launch it at Linux or MacOS with Python" - da ging ich naiv davon aus, daß der Code auch hierunter entwickelt und getestet wurde - das war eben naiv von mir!

Wir kommen dem Problem aber näher...

Viele Grüße, meshua
__________________
Aktuelle Serie: Eun Kyung - A Late Summer Afternoon || San Francisco | Frankfurt | Hongkong: Google+ * IG * FB
meshua ist offline   Mit Zitat antworten
Alt 04.05.2017, 12:40   #9
usch
 
 
Registriert seit: 16.08.2010
Beiträge: 18.830
Zitat:
Zitat von herby1961 Beitrag anzeigen
das muss offensichtlich unter macOS anders parametriert werden als unter windows.
Das ist noch nicht raus. Vielleicht ist nur der Dateiname irgendwo verloren gegangen.
Mach mal ein print (F) vorher.
__________________
Any feature is a bug unless it can be turned off. (Heuer's Law, 1990)
usch ist offline   Mit Zitat antworten
Alt 04.05.2017, 17:17   #10
herby1961
 
 
Registriert seit: 11.11.2015
Ort: Österreich - Niederösterreich
Beiträge: 390
Zitat:
Zitat von usch Beitrag anzeigen
Das ist noch nicht raus. Vielleicht ist nur der Dateiname irgendwo verloren gegangen.
Mach mal ein print (F) vorher.
Ich habe es geschafft. Statt der Zeile:

Code:
# exifdata = subprocess.check_output(['exiftool', '-a',F],shell=True,universal_newlines=True,stdin=subprocess.PIPE,stderr=subprocess.PIPE)
ist es unter macOS

Code:
exifdata = subprocess.check_output(['exiftool', '-a', F],universal_newlines=True)
welche der drei Parameter shell=, stderr=, stdin= er ihn wirklich stört habe ich jetzt nicht weiter erforscht.
__________________
www.herbertgrabmayer.eu
herby1961 ist offline   Mit Zitat antworten
Sponsored Links
Antwort
Startseite » Forenübersicht » Kreativbereich » Nach der Aufnahme » [Mac/Linux/Win] Visualizer of AF data from Sony cameras (JPEG&ARW EXIFs)

Themen-Optionen
Ansicht

Forenregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:46 Uhr.