Ich habe ein Array folgendermaßen erstellt:
import numpy as np
data = np.zeros( (512,512,3), dtype=np.uint8)
data[256,256] = [255,0,0]
Ich möchte, dass ein einzelner roter Punkt in der Mitte eines 512x512-Bildes angezeigt wird. (Zumindest am Anfang ... ich denke, ich kann den Rest von dort herausfinden)
Mit PIL können Sie ein Bild erstellen (und anzeigen):
from PIL import Image
import numpy as np
w, h = 512, 512
data = np.zeros((h, w, 3), dtype=np.uint8)
data[256, 256] = [255, 0, 0]
img = Image.fromarray(data, 'RGB')
img.save('my.png')
img.show()
Folgendes sollte funktionieren:
from matplotlib import pyplot as plt
plt.imshow(data, interpolation='nearest')
plt.show()
Wenn Sie Jupyter notebook/lab verwenden, verwenden Sie diesen Inline-Befehl, bevor Sie matplotlib importieren:
%matplotlib inline
Der kürzeste Weg ist, scipy
wie folgt zu verwenden:
from scipy.misc import toimage
toimage(data).show()
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:
from scipy.misc import imshow
imshow(data)
Mit pygame können Sie ein Fenster öffnen, die Oberfläche als Array von Pixeln abrufen und von dort aus nach Belieben bearbeiten. Sie müssen Ihr Numpy-Array jedoch in das Surface-Array kopieren, was sehr viel langsamer ist, als die eigentlichen Grafikoperationen auf den Pygame-Oberflächen selbst durchzuführen.
Die Python Imaging Library kann Bilder mit Numpy-Arrays anzeigen. Schauen Sie sich diese Seite für Beispielcode an:
BEARBEITEN: Wie der Hinweis am Ende dieser Seite besagt, sollten Sie die neuesten Versionshinweise lesen, um dies zu vereinfachen: