如何将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轮,但这里是:
- 首先确保你的numpy数组
myarray
被标准化,最大值为1.0
。 - 将颜色表直接应用到
myarray
。 - 重新调整到
0-255
范围。 - 转换为整数,使用
np.uint8()
。 - 使用
Image.fromarray()
。
你完成了:
from PIL import Image im = Image.fromarray(np.uint8(cm.gist_earth(myarray)*255))
用plt.savefig()
:
与im.save()
: