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

Schreibe einen Kommentar