admin管理员组文章数量:1654286
用pytorch训练神经网络的时候,用PIL保存图片之后立即读出,出现问题。主要是想用PIL包进行图像压缩的图像处理
源码:
name = './temp.jpg'
pil.save(name, "JPEG", quality=ratio)
img = Image.open(name)
pil = img
报错
IOError: Traceback (most recent call last):
File “/home/chenjun/anaconda2/envs/mypytorch/lib/python2.7/site-packages/torch/utils/data/dataloader.py”, line 106, in _worker_loop
samples = collate_fn([dataset[i] for i in batch_indices])
File “/media/chenjun/ed/31_ocr_own/Calligraphy_crnn/mech_demo2/src/dataset.py”, line 115, in getitem
img = self.transform(img)
File “/media/chenjun/ed/31_ocr_own/Calligraphy_crnn/mech_demo2/src/utils.py”, line 323, in call
img = t(img)
File “/media/chenjun/ed/31_ocr_own/Calligraphy_crnn/mech_demo2/src/utils.py”, line 307, in call
img = Image.open(name)
File “/home/chenjun/anaconda2/envs/mypytorch/lib/python2.7/site-packages/PIL/Image.py”, line 2657, in open
% (filename if filename else fp))
IOError: cannot identify image file ‘./002.jpeg’
解决方案:
采用opencv读取的方式读入图片
temp = cv2.imread(name)
pil = Image.fromarray(temp[:,:,::-1])
AttributeError: ‘NoneType’ object has no attribute ‘shape’
发现是图片本身的问题
具体原因:
pytorch的dataloader是多线程的,减少num_worker就好了。
train_loader = torch.utils.data.DataLoader( # 训练数据集
train_dataset, batch_size=opt.batchSize,
shuffle=False, sampler=sampler,
num_workers=int(opt.workers),
collate_fn=dataset.OwnalignCollate(imgH=opt.imgH, keep_ratio=opt.keep_ratio))
参考
- https://zhidao.baidu/question/1862277844188704627.html
本文标签: identifyIOErrorPILImagejpg
版权声明:本文标题:PIL IOError: cannot identify image file '.temp.jpg' 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1729649731a1208896.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论