今天学习pytoch时发现有好多图片损坏了
报错如下:
PIL.UnidentifiedImageError: cannot identify image file <_io.BufferedReader name=‘./train\cat\052cat.jpg’>
原因
图片没有被正确的下载
解决
写个小程序把所有损坏的图片都删除
import cv2
import os
import numpy as np
fn_all = './test/cat/'
for fn in os.listdir(fn_all):
img = cv2.imread(fn_all + fn)
if type(img) != type(np.array([1])):
os.remove(fn_all + fn)
小程序改进:
import cv2
import os
import numpy as np
fn_all = ['./val/','./train/','./test/']
for fn_a in fn_all:
for fn in os.walk(fn_n):
if fn[-1] != []:
for i in fn[-1]:
img_f = fn[0] +'/'+ i
if type(cv2.imread(img_f)) != type(np.array([1])):
os.remove(img_f)