代码出错 img = data_transform(img) File “C:\Users\Administrator\AppData\Local\Programs\Python\Python39

**运行出现:**File “E:\桌面\pytorch项目练习\predict.py”, line 28, in main
img = data_transform(img)
File “C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\torchvision\transforms\transforms.py”, line 95, in call
img = t(img)
File “C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\torch\nn\modules\module.py”, line 1110, in call_impl
return forward_call(*input, **kwargs)
File “C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\torchvision\transforms\transforms.py”, line 270, in forward
return F.normalize(tensor, self.mean, self.std, self.inplace)
File “C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\torchvision\transforms\functional.py”, line 363, in normalize
tensor.sub
(mean).div_(std)
RuntimeError: The size of tensor a (4) must match the size of tensor b (3) at non-singleton dimension 0
在这里插入图片描述

第28行代码

img = Image.open(img_path)

解决办法:在对应代码改成img = Image.open(image_path).convert(‘RGB’)

补充:

Image.open()得到的img数据类型呢是Image对象,不是普通的数组。
cv2.imread()得到的img数据类型是np.array()类型。

通道
对于Image.open()函数默认彩色图像读取通道的顺序为RGB,而cv2.imread()读取通道的顺序为BGR。同时,当图像格式为RGBA时,Image.open(‘—.jpg’)读取的格式为RGBA(其中A表示图像的alpha通道,即RGBA共四个通道),而cv2.imread(’—.jpg’)读取的格式是BGR,只有三个通道。
通过使用cv2.split(img)可得到cv2.imread()读取的图片img的BGR通道值。即使图片是RGBA四通道,cv2.imread()方法仍然读取的是BGR三通道。

显示方法

图像显示时常见方法有两种,一种是matplotlib的plt.imshow()方法,一种是opencv的cv2.imshow()。两个函数的输入都要求是数组。因此Image读取的图片要先转化为数组,再进行图片的显示。plt函数读入的顺序为RGB,cv2.imshow()读入的顺序是BGR。因此image与plt.imshow()配合使用,opencv的方法配套使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值