Mein System ist Mac OS X 10.8.2. Ich habe mehrere 2560 x 500 unkomprimierte 16-Bit-TIFF-Bilder (Graustufen, vorzeichenlose 16-Bit-Ganzzahlen). Ich versuche zuerst, sie mit PIL (installiert über Homebrew, Version 1.7.8) zu laden:
%Vor%Die negativen Werte sind um 65.536 ... wahrscheinlich kein Zufall.
Wenn ich vorhabe, Pixel zu ändern und über PIL wieder zum TIFF-Bild zurückzukehren (indem ich das Array einfach als Bild zurücksetze):
%Vor%Ich bekomme Fehler:
%Vor% Ich kann Image.fromarray()
in der PIL-Dokumentation nicht finden. Ich habe versucht, über Image.fromstring()
zu laden, aber ich verstehe die PIL-Dokumentation nicht und es gibt wenig Beispiele.
Wie im obigen Code gezeigt, scheint PIL die Daten als I;16B
zu "erkennen". Was ich von den PIL-Dokumenten erkennen kann, ist der Modus I
:
Offensichtlich ist das nicht korrekt.
Ich finde viele Artikel auf SX, die darauf hindeuten, dass PIL keine 16-Bit-Bilder unterstützt. Ich habe Vorschläge gefunden, um pylibtiff zu verwenden, aber ich glaube, das ist nur Windows?
Ich suche nach einer "leichten" Möglichkeit, mit diesen TIFF-Bildern in Python zu arbeiten. Ich bin überrascht, dass es so schwierig ist, und das lässt mich glauben, dass das Problem für andere offensichtlich ist.
Es stellt sich heraus, dass Matplotlib unkomprimierte 16-Bit-TIFF-Bilder in zwei Codezeilen verarbeitet:
%Vor%Et voila. Ich denke, das entspricht nicht meinen Anforderungen als "leicht", da Matplotlib (für mich) ein schweres Modul ist, aber es ist spektakulär einfach, das Bild in ein Numpy-Array zu bekommen. Ich hoffe, dass dies jemand anderen hilft, schnell eine Lösung zu finden, da dies für mich nicht offensichtlich war.
Probieren Sie Pillow , die "freundliche" PIL-Gabel. Sie haben vor kurzem eine bessere Unterstützung für 16- und 32-Bit-Bilder einschließlich der numpy-Array-Schnittstelle hinzugefügt. Dieser Code wird mit dem neuesten Kissen funktionieren:
%Vor%Tags und Links python python-imaging-library tiff