example colorscales color cmap python numpy matplotlib python-imaging-library color-mapping

python - colorscales - Cómo convertir la matriz Numpy a la imagen PIL aplicando matplotlib colormap



python colormap plot (1)

Muy ocupado, pero aquí está:

  1. Primero asegúrate de que tu matriz numérica, myarray , esté normalizada con el valor máximo en 1.0 .
  2. Aplica el mapa de myarray directamente a myarray .
  3. Cambie la escala al rango 0-255 .
  4. Convierte a enteros, usando np.uint8() .
  5. 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!