python - colorscales - Cómo convertir la matriz Numpy a la imagen PIL aplicando matplotlib colormap
python colormap plot (1)
Muy ocupado, pero aquí está:
- Primero asegúrate de que tu matriz numérica,
myarray
, esté normalizada con el valor máximo en1.0
. - Aplica el mapa de
myarray
directamente amyarray
. - Cambie la escala al rango
0-255
. - Convierte a enteros, usando
np.uint8()
. - Use
Image.fromarray()
.
Y tu estas listo:
from PIL import Image
im = Image.fromarray(np.uint8(cm.gist_earth(myarray)*255))
con plt.savefig()
:
con im.save()
:
Tengo un problema simple pero no puedo encontrar una buena solución.
Quiero tomar una matriz numpy 2D que represente una imagen en escala de grises y convertirla en una imagen PIL RGB mientras aplico algunos de los mapas de color matplotlib.
Puedo obtener una salida PNG razonable utilizando el comando pyplot.figure.figimage
:
dpi = 100.0
w, h = myarray.shape[1]/dpi, myarray.shape[0]/dpi
fig = plt.figure(figsize=(w,h), dpi=dpi)
fig.figimage(sub, cmap=cm.gist_earth)
plt.savefig(''out.png'')
Aunque podría adaptar esto para obtener lo que quiero (probablemente usando StringIO obtenga la imagen PIL), me pregunto si no hay una manera más simple de hacerlo, ya que parece ser un problema muy natural de visualización de imágenes. Digamos, algo como esto:
colored_PIL_image = magic_function(array, cmap)
¡Gracias por leer!