首页 > 解决方案 > 将 numpy 数组转换为图像 RGB

问题描述

我有一个这样的列表:

data = [(22, 21, 2), (217, 210, 166), (250, 240, 230), (276, 270, 260), (232, 234, 249), (274, 282, 270), (258, 266, 264)...]

对于 16 x 16 的图像,长度为 256。

我想将其转换为原始图像,但给我一张 3*256 的图像,如下所示:

例子

我正在使用此代码

img = Image.fromarray(data.astype('uint8'), 'RGB')

我怎样才能解决这个问题?

标签: python

解决方案


这是np.reshape变得有用的地方。

你需要做的是:

Image.fromarray(np.reshape(image_arr, (16,16,3)).astype(np.uint8), 'RGB')

这会将您的数组重塑为 16x16x16 数组(排名 3),这是 Image.fromarray 所期望的。

有关更多信息,这里是文档np.reshape

使用 NDarrays 的 reshape 属性并image_arr.reshape((16,16,3))改为这样做也可能会很好。


推荐阅读