【问题标题】:Convert 1D Numpy Array into a 1D image using PIL使用 PIL 将 1D Numpy Array 转换为 1D 图像
【发布时间】:2019-10-25 15:51:02
【问题描述】:

将一维 numpy 数组转换为 PIL 图像对象时,PIL 返回 IndexError: tuple index out of range

我正在尝试使用 PIL 将长度为 2048 且值介于 0 和 255 之间的一维 Numpy 数组转换为图像。我认为这是我的阵列是一维的问题。我也尝试过将随机一维数组整数转换为图像,我得到了同样的错误。

随机整数示例:

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

我希望代码显示具有不同灰度的单行像素的图像。

【问题讨论】:

    标签: python arrays image numpy


    【解决方案1】:

    当我尝试运行您的代码时,问题只是您的数组是一维数组。所以试试:

    arr2d = arr.reshape(-1,1)
    Image.fromarray(arr2d,'L').show()
    

    【讨论】:

    • 啊!非常感谢!我将我的数据重塑为 2D 并且它起作用了。
    【解决方案2】:

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

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

    【讨论】:

    • 是的,感谢您指出这一点。 =) 我要花很长时间才能发现这个错误。
    猜你喜欢
    • 2020-12-11
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 2021-02-13
    • 2021-05-27
    • 1970-01-01
    相关资源
    最近更新 更多