PIL TypeError: Cannot handle this data type - depend on image size

PIL TypeError: Cannot handle this data type - depend on image size

LEVIR-CD中的原始图像大小为1024 * 1024,训练时会占用太多内存。因此,需要将原始图像切割成更小的块。

当图像数据集包含大小为 1024x1024 的 png 格式的图像时,下面的代码不会 return 错误,如果我将图像裁剪成 16 个部分 (256x256px),则此代码 return 会出错

tmp = np.array(Image.open(L_path), dtype=np.uint32)/255
L_img = Image.fromarray(tmp)

错误

L_img = Image.fromarray(tmp) File "/usr/lib64/python3.6/dist-packages/PIL/Image.py", line 2766, in fromarray raise TypeError("Cannot handle this data type: %s, %s" % typekey) from e TypeError: Cannot handle this data type: (1, 1, 3), <f8

图像样本 -(原始图像的左下角)

原始图像样本

按照此答案中所述解决此问题

我修正错误:

L_img = Image.fromarray(tmp.astype(np.uint8))

此处描述的完整代码at STANet project Github page

pip3 导入库版本:

Pillow 8.1.0

numpy 1.19.5

我误解了图像大小如何改变函数行为。如果有人能解释一下,我将不胜感激。

UPDATE:据我了解,它取决于图像的位深度。原始图像 8 位,但裁剪图像为 24 位 png。 这点我没注意,不过问题已经解决了

据我了解,这取决于图像的位深度。原始图像 8 位,但裁剪图像为 24 位 png