【学习笔记】
用PIL的Image.open()读取数据集,明明读取出的图片是(112,112,3)的格式,但是当用transforms.Compose()将PLI图片转为tensor时会提示错误:RuntimeError: output with shape [1, 112, 112] doesn't match the broadcast shape [3, 112, 112]
报错原因:输入图片需要是RGB空间图片而不能是灰度图,所以导致张量的通道数不匹配。
img = Image.open(img_dir) #PIL读入的图像是PIL.Image对象格式
print(img.mode) #打印图片模式,RGB, L..等,结果发现图片有mode模式为L(灰度图)的
解决方法:将图片统一转为RGB
img = Image.open(img_dir) #PIL读入的图像是PIL.Image对象格式
img = img.convert('RGB') # 图像形状是HxWxC,如果想使用RGB格式,可以使用convert()函数