<p>我以前遇到过这个问题。因此,我开发了一个python脚本来测试有效图像文件的培训和测试目录。文件扩展名必须是jpg、png、bmp或gif中的一个,因此它首先检查扩展名是否正确。然后它尝试使用cv2读取图像。如果未输入有效图像,则会创建异常。在每种情况下,都会打印出错误的文件名。最后,一个名为bad_list的列表包含坏文件路径列表。注意:目录名称必须为“test”和“train”</p>
<pre><code>import os
import cv2
bad_list=[]
dir=r'c:\'PetImages'
subdir_list=os.listdir(dir) # create a list of the sub directories in the directory ie train or test
for d in subdir_list: # iterate through the sub directories train and test
dpath=os.path.join (dir, d) # create path to sub directory
if d in ['test', 'train']:
class_list=os.listdir(dpath) # list of classes ie dog or cat
# print (class_list)
for klass in class_list: # iterate through the two classes
class_path=os.path.join(dpath, klass) # path to class directory
#print(class_path)
file_list=os.listdir(class_path) # create list of files in class directory
for f in file_list: # iterate through the files
fpath=os.path.join (class_path,f)
index=f.rfind('.') # find index of period infilename
ext=f[index+1:] # get the files extension
if ext not in ['jpg', 'png', 'bmp', 'gif']:
print(f'file {fpath} has an invalid extension {ext}')
bad_list.append(fpath)
else:
try:
img=cv2.imread(fpath)
size=img.shape
except:
print(f'file {fpath} is not a valid image file ')
bad_list.append(fpath)
print (bad_list)
</code></pre>