我有一个简单的问题,但我找不到解决它的好办法.

我想获取一个表示灰度图像的NumPy 2D数组,并在应用一些matplotlib colored颜色 映射时将其转换为RGB PIL图像.

我可以使用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)

推荐答案

这是一个相当忙碌的俏皮话,但这里是:

  1. 首先确保NumPy数组myarray的最大值为1.0.
  2. 将 colored颜色 贴图直接应用于myarray.
  3. 重新zoom 到0-255范围.
  4. 使用np.uint8()转换为整数.
  5. 使用Image.fromarray().

你完成了:

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

plt.savefig()人:

在此处输入图像描述

im.save()人:

在此处输入图像描述

Python相关问答推荐

重命名变量并使用载体中的字符串存储 Select 该变量

计算每月过go x年的平均值

将列表中的元素替换为收件箱中的元素

socket.gaierror:[Errno -2]名称或服务未知|Firebase x Raspberry Pi

替换字符串中的点/逗号,以便可以将其转换为浮动

Python panda拆分列保持连续多行

如何终止带有队列的Python进程?+ 队列大小的错误?

在应用循环中间保存pandas DataFrame

使用numpy提取数据块

使用新的类型语法正确注释ParamSecdecorator (3.12)

Pandas 滚动最接近的价值

删除任何仅包含字符(或不包含其他数字值的邮政编码)的观察

优化pytorch函数以消除for循环

Python虚拟环境的轻量级使用

对象的`__call__`方法的setattr在Python中不起作用'

提取相关行的最快方法—pandas

如何在Python中获取`Genericums`超级类型?

解决调用嵌入式函数的XSLT中表达式的语法移位/归约冲突

在Python中使用if else或使用regex将二进制数据如111转换为001""

Python Tkinter为特定样式调整所有ttkbootstrap或ttk Button填充的大小,适用于所有主题