so speichern Sie ein array als Bild mit Graustufen matplotlib/numpy?
Ich bin versucht zu retten, ein numpy-array-Abmessungen 128 x 128 Pixel in einem Graustufen-Bild.
Ich habe einfach gedacht, dass die pyplot.imsave Funktion würde den job tun, aber es ist nicht, es irgendwie wandelt sich mein array in ein RGB-Bild.
Ich versuchte, Sie zu zwingen, die Farbpalette zu Grau bei der Konvertierung aber auch wenn das gespeicherte Bild in Graustufen angezeigt werden, hat es noch einen 128x128x4 dimension.
Hier ist ein code Beispiel das ich schrieb, um zu zeigen das Verhalten :
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mplimg
from matplotlib import cm
x_tot = 10e-3
nx = 128
x = np.arange(-x_tot/2, x_tot/2, x_tot/nx)
[X, Y] = np.meshgrid(x,x)
R = np.sqrt(X**2 + Y**2)
diam = 5e-3
I = np.exp(-2*(2*R/diam)**4)
plt.figure()
plt.imshow(I, extent = [-x_tot/2, x_tot/2, -x_tot/2, x_tot/2])
print I.shape
plt.imsave('image.png', I)
I2 = plt.imread('image.png')
print I2.shape
mplimg.imsave('image2.png',np.uint8(I), cmap = cm.gray)
testImg = plt.imread('image2.png')
print testImg.shape
In beiden Fällen die Ergebnisse der "drucken" - Funktion (128,128,4).
Kann mir jemand erklären, warum die imsave Funktion ist das erstellen von diesen Dimensionen, auch wenn meine Eingabe-array ist eines Luminanz-Typ?
Und natürlich, hat jemand eine Lösung zum speichern des Arrays in eine standard-Graustufen-format?
Dank!
InformationsquelleAutor Mathieu Paurisse | 2014-11-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit
PIL
es sollte funktionieren wie dieseuint8
Werte macht Dinge eindeutig zu PILArbeitete wie ein Charme! Danke!
InformationsquelleAutor eickenberg
Wollte ich nicht verwenden PIL in meinem code und wie schon in der Frage ich lief in das gleiche problem mit pyplot, wo auch in Graustufen, in dem die Datei gespeichert ist MxNx3 matrix.
Da das eigentliche Bild auf der Festplatte war nicht wichtig für mich, ich landete schreiben die matrix so wie Sie ist und Lesen Sie es wieder "wie Sie ist" mit numpy ist das speichern und laden von Methoden:
Und:
InformationsquelleAutor roy650