gpt4 book ai didi

python - PIL 类型错误 : Cannot handle this data type

转载 作者:行者123 更新时间:2023-12-04 05:45:14 25 4
gpt4 key购买 nike

我有一个图像存储在一个 numpy 数组中,我想将其转换为 PIL.Image为了执行仅适用于 PIL 的插值。

当试图通过 Image.fromarray() 转换它时它引发以下错误:

TypeError: Cannot handle this data type



我已阅读答案 herehere但他们似乎对我的情况没有帮助。

我正在尝试运行的内容:
from PIL import Image

x # a numpy array representing an image, shape: (256, 256, 3)

Image.fromarray(x)

最佳答案

tl;博士

是否x包含 uint [0, 255] 中的值?如果不是,尤其是如果 x范围从 0 到 1,这就是错误的原因。

解释

大多数图像库(例如 matplotlib、opencv、scikit-image)有两种表示图像的方式:

  • uint值范围从 0 到 255。
  • float值范围从 0 到 1。

  • 后者在图像之间进行操作时更方便,因此在计算机视觉领域更受欢迎。
    然而PIL似乎 不支持 RGB 图像 .

    如果你看看 here
    似乎当您尝试从数组中读取图像时,如果数组的形状为 (height, width, 3)它自动假定它是一个 RGB 图像和 期望它有一个 dtypeuint8 !
    但是,在您的情况下,您有一个带有 float 的 RBG 图像。从 0 到 1 的值。

    解决方案

    您可以通过将图像转换为 PIL 预期的格式来修复它:
    im = Image.fromarray((x * 255).astype(np.uint8))

    关于python - PIL 类型错误 : Cannot handle this data type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55319949/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com