使用PIL将1D的Numpy数组转换为1D图片

3

当将一个1D的numpy数组转换为PIL图像对象时,PIL会返回IndexError: tuple index out of range错误。

我正在尝试将长度为2048、值在0到255之间的1D numpy数组转换为图像使用PIL。我认为这是由于我的数组是1D造成的问题。我还尝试将一个随机的1D整数数组转换为图像,但我得到相同的错误。

随机整数示例:

from PIL import Image
import numpy as np

arr = np.random.randint(255, size=(2048))
arr = arr.astype('uint8')
img = Image.fromarray(arr, 'L')
img.show()

我希望代码能够显示一行像素,这些像素具有不同的灰度色调。
2个回答

1

输入数组必须是二维的,即使其中一个维度为1。您只需要决定是否希望图像成为水平或垂直像素行,并在创建数组时添加维度。

arr = np.random.randint(255, size=(2048, 1))  # vertical image

arr = np.random.randint(255, size=(2048, 1))  # horizontal image

是的,谢谢你指出这个问题。=)如果没有你的提醒,我可能要花很长时间才能发现这个错误。 - user12274714

1
当我尝试运行您的代码时,问题仅在于您的数组是一维数组。因此,请尝试使用以下代码:
arr2d = arr.reshape(-1,1)
Image.fromarray(arr2d,'L').show()

啊!非常感谢!我将我的数据重塑为2D格式,结果很好。 - user12274714

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接