Ich habe ein Array so erstellt:
import numpy as np
data = np.zeros( (512,512,3), dtype=np.uint8)
data[256,256] = [255,0,0]
Ich möchte, dass dies einen einzelnen roten Punkt in der Mitte eines 512x512-Bildes anzeigt. (Zumindest zu Beginn ... Ich denke, ich kann den Rest von dort herausfinden)
Antworten:
Sie können PIL verwenden, um ein Bild zu erstellen (und anzuzeigen):
quelle
(w,h,3)
, dies sollte jedoch der Fall sein(h,w,3)
, da sich die Indizierung in PIL von der Indizierung in numpy unterscheidet. Es gibt verwandte Frage: stackoverflow.com/questions/33725237/…(h,w,3)
. (Es ist jetzt oben festgelegt.) Die Länge der ersten Achse kann als Anzahl der Zeilen im Array und die Länge der zweiten Achse als Anzahl der Spalten betrachtet werden. Entspricht also(h, w)
einem Array von "Höhe"h
und "Breite"w
.Image.fromarray
konvertiert dieses Array in ein Bild mit Höheh
und Breitew
.img.show()
funktioniert nicht in ipython notebook.img_pil = Image.fromarray(img, 'RGB') display(img_pil.resize((256,256), PIL.Image.LANCZOS))
Folgendes sollte funktionieren:
Wenn Sie Jupyter Notebook / Lab verwenden, verwenden Sie diesen Inline-Befehl, bevor Sie matplotlib importieren:
quelle
plt.gray()
einmal in Ihrem Code aufzurufen , um alle folgenden Grafiken auf Graustufen umzustellen. Nicht was das OP will, aber trotzdem gut zu wissen.squeeze()
, um die dritte Dimension zu beseitigen:plt.imshow(data.squeeze())
Der kürzeste Weg ist
scipy
wie folgt :Dazu muss auch PIL oder Pillow installiert sein.
Ein ähnlicher Ansatz, der auch PIL oder Pillow erfordert, aber möglicherweise einen anderen Betrachter aufruft, ist:
quelle
scipy.misc.imshow(data)
.toimage
wurde in scipy-1.0.0 veraltet und in 1.2.0 zugunsten von Pillow's entferntImage.fromarray
.Mit Pygame können Sie ein Fenster öffnen, die Oberfläche als Array von Pixeln abrufen und von dort aus beliebig bearbeiten . Sie müssen Ihr Numpy-Array jedoch in das Oberflächen-Array kopieren, was viel langsamer ist als die eigentlichen Grafikoperationen auf den Pygame-Oberflächen selbst.
quelle
So zeigen Sie Bilder, die in einem numpy-Array gespeichert sind, anhand eines Beispiels an (funktioniert im Jupyter-Notizbuch)
Ich weiß, dass es einfachere Antworten gibt, aber diese geben Ihnen ein Verständnis dafür, wie Bilder tatsächlich aus einem numpy-Array ertrinken.
Beispiel laden
Array eines Bildes anzeigen
Erstellen Sie leere 10 x 10 Untergrundstücke zur Visualisierung von 100 Bildern
Plotten von 100 Bildern
Ergebnis:
Was macht
axes.flat
das Es wird ein Numpy-Enumerator erstellt, sodass Sie über die Achse iterieren können, um Objekte darauf zu zeichnen. Beispiel:quelle
Verwenden Sie zum Beispiel Kissen aus dem Array:
quelle
Die Python Imaging Library kann Bilder mithilfe von Numpy-Arrays anzeigen. Auf dieser Seite finden Sie Beispielcode:
BEARBEITEN: Wie der Hinweis unten auf dieser Seite besagt, sollten Sie die neuesten Versionshinweise überprüfen, die dies viel einfacher machen:
http://effbot.org/zone/pil-changes-116.htm
quelle
Ergänzung dazu mit matplotlib. Ich fand es praktisch, Computer Vision-Aufgaben zu erledigen. Angenommen, Sie haben Daten mit dtype = int32
quelle