我是PIL的新手,所以我一直在玩这个游戏:
from PIL import Image
import numpy as np
image_array = np.array([
[[0, 0, 0],
[255, 255, 255],
[0, 0, 0]],
[[255, 255, 255],
[0, 0, 0],
[255, 255, 255]],
[[0, 0, 0],
[255, 255, 255],
[0, 0, 0]]])
image = Image.fromarray(image_array)
image.show()然而,当我想使用它时,它在第13行给出了以下错误:TypeError 无法处理此数据类型:(1,1,3),,但令人惊讶的是,当我使用与相同数组完全相同的图像image_array = np.array(Image.open('Image.png'))时,它不会给我一个错误:Image.png (图像非常小,3乘3像素)
似乎没有其他人有同样的问题,或者我只是遗漏了一些东西
发布于 2022-01-01 18:52:41
发布于 2022-01-01 20:59:41
当您创建图像数组时:
image_array = np.array([
[[0, 0, 0],
[255, 255, 255],
[0, 0, 0]],
[[255, 255, 255],
[0, 0, 0],
[255, 255, 255]],
[[0, 0, 0],
[255, 255, 255],
[0, 0, 0]]])它将是int64,而不是np.uint8。你可以用以下方法检查:
print(image_array.dtype)因此,它将需要8倍的内存比需要。与其创建不必要大的东西,然后再创建另一个版本,现在需要9倍的RAM,我建议您首先使用正确的类型创建它。因此,请使用:
image_array = np.array([
[[0, 0, 0],
[255, 255, 255],
[0, 0, 0]],
[[255, 255, 255],
[0, 0, 0],
[255, 255, 255]],
[[0, 0, 0],
[255, 255, 255],
[0, 0, 0]]], dtype=np.uint8)https://stackoverflow.com/questions/70550508
复制相似问题