Importieren von PPM-Bilder mit python und PIL-Modul
EDIT:
Tatsächlich, ich brauche einen Weg, ich kann die Zeilen, und extrahieren Sie die pixel-info in eine gewisse Struktur, so dass ich verwenden können, die putpixel Funktion zum erstellen eines Bildes basierend auf den ppm-p3-Datei.
Ich habe versucht, dies so lange und ich kann nicht einfach bekommen Sie es richtig.
Arbeite ich mit der Python Imaging Library (PIL) und ich möchte zu öffnen, der ein PPM-Bild und zeigt es als Bild auf dem Bildschirm.
Wie kann ich das machen, dass nur mithilfe von PIL?
dies ist mein ppm-Bild. es ist nur ein 7x1 Bild, das ich erstellt.
P3
# size 7x1
7 1
255
0
0
0
201
24
24
24
201
45
24
54
201
201
24
182
24
201
178
104
59
14
- Sie zeigen, was Sie versucht haben, wäre gut.
Du musst angemeldet sein, um einen Kommentar abzugeben.
edit:, Nachdem Sie modifiziert Ihre Frage, und Sie erlauben nur das Lesen der Zeilen, überprüfen Sie den link unten. Es erklärt, wie zu schreiben Sie ein wrapper, der lädt die Datei. Ich bin über testen diese selbst und es sollte funktionieren...
Du derzeit (11/2010) kann nicht geöffnet plain PPM-Bilder mit PIL. Plain bedeutet hier "ascii". Binär-Versionen funktionieren jedoch. Der Hauptgrund dafür ist, dass ascii-Dateien, die nicht Konstante Anzahl von bits pro pixel. Und das ist, was der image loader in PIL übernimmt. Ich habe eine Verwandte Frage:
Wie schreibt PIL-image-filter für nur pgm-format?
Ich bin Planung zu schreiben, ein PIL-filter für einfachen PPM ist, aber ich bin kurz auf Zeit. Wenn Sie interessiert sind zu helfen, bitte lassen Sie mich wissen.
br,
Juha
Und wenn Sie gerne die Arbeit mit
np.array
Objekte, nur dazu:imageio.imread
: imageio.readthedocs.io/en/stable/scipy.htmlEdit: Ein wenig mehr Informationen, geht ein langer Weg. Jetzt sehe ich das Bild, das Sie versuchen zu öffnen, zusammen mit der genauen Fehlermeldung, ich erinnere mich an eine wenig dokumentierte Tatsache über die PIL-und PPM - PIL keine Unterstützung für den ASCII-Versionen beginnend mit P1/P2/P3, nur die binären Versionen P4/P5/P6. P. S. Ihnen fehlt ein Feld in Ihrer Datei, es sollte eine
255
für den maximalen pixel-Wert nach der Breite und Höhe.PPM aufgeführt ist als ein unterstütztes format aufweisen, Sie sollten in der Lage sein, die Datei zu öffnen mit
"Bild".open('myfile.ppm')
.Ein wenig mehr Informationen benötigt werden, um das Bild anzuzeigen. Welches Betriebssystem verwenden Sie und haben Sie eine Vorliebe für die Fenster-Funktionen, die Sie verwenden möchten?
Lesen Sie die Anleitung: http://effbot.org/imagingbook/introduction.htm
Ersten Beispiel
show()
Methode. Wenn Sie auf Linux sind, werden Sie sicher, dass Sie diexv
Befehl installiert.im = Image.open("lena.ppm")
Diese scheint nicht zu funktionieren für ein P3 *.PPM, es funktioniert, wenn Sie versuchen, eine P6 ein.