如何将Numpy数组转换为应用matplotlib颜色映射的PIL图像

我有一个简单的问题,但无法find一个好的解决scheme。

我想要一个代表灰度图像的numpy二维数组,并将其转换为RGB PIL图像,同时应用一些matplotlib色彩映射。

我可以通过使用pyplot.figure.figimage命令获得一个合理的PNG输出:

 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') 

虽然我可以适应这个来获得我想要的东西(可能使用StringIO来获得PIL图像),但我不知道是否没有更简单的方法来做到这一点,因为它似乎是一个非常自然的图像可视化问题。 比方说,像这样的东西:

 colored_PIL_image = magic_function(array, cmap) 

谢谢阅读!

相当繁忙的class轮,但这里是:

  1. 首先确保你的numpy数组myarray被标准化,最大值为1.0
  2. 将颜色表直接应用到myarray
  3. 重新调整到0-255范围。
  4. 转换为整数,使用np.uint8()
  5. 使用Image.fromarray()

你完成了:

 from PIL import Image im = Image.fromarray(np.uint8(cm.gist_earth(myarray)*255)) 

plt.savefig()

在这里输入图像描述

im.save()

在这里输入图像描述

Interesting Posts