TypeError: Cannot handle this data type: (1, 1, 28), |u1

本文详细介绍了如何在Python中实现PIL图像与Numpy数组之间的相互转换,并解决了转换过程中遇到的数据类型不匹配的问题。文章还特别指出,当处理如SVHN数据集时需要注意图像数据维度的调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PIL和numpy相互转换方式如下:

from PIL import Image

#PIL image转成numpy
np_img = np.asarray(PIL_img)  #参数时PIL类型的图片
或 
np_img = np.array(PIL_img)

#将array准成PIL image
Image.fromarray(np.uint8(np_img))

但是直接用Image.fromarray(np.uint8(data))转换会报错:TypeError: Cannot handle this data type: (1, 1, 28), |u1,为啥啊,我哭了,在网上搜了一圈也没找到答案,然后我从可以转换成功的代码入手,终于发现问题了,太难了也!
原来,PIL需要的格式是(W,H,C),而SVHN数据集的格式是(C,W,H)所以又要进行转换了,把(C,W,H)变为(W,H,C):

img.transpose(1,2,0)

然后,就可以愉快的转换了!

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值