首页 > 解决方案 > 如何解释“Image.fromarray()”方法?

问题描述

我正在尝试使用以下命令从“numpy.ndarray”创建图像:

x = np.random.randint(0, 256, (3, 64, 64), dtype=np.uint8)

y = Image.fromarray(x)

但是,我收到此错误:

TypeError:无法处理此数据类型:(1, 1, 64), |u1

但是当这样传递“x”时:

x = np.random.randint(0, 256, (64, 64, 3), dtype=np.uint8)

y = Image.fromarray(x)

有用。但据我了解:np.random.randint(low, high, (depth/layers, rows, columns))。因此,第一个“x”是有意义的,因为它有 3 层 (64x64) 矩阵;而后者表示(64x3)矩阵的 64 层。

我在这里想念什么?

标签: pythonimagenumpypython-imaging-library

解决方案


这是因为 Image 需要“通道最后”数组作为图像。您的第一个示例在其第一个轴上有颜色通道。尽管 PIL 文档中糟糕的文档没有帮助,因为它没有明确说明。

有关通道第一或通道最后图像的 conecpt 的更多信息,请参阅


推荐阅读