"""
由于标注时有些错误,导致图片有几张多余的或者txt文件有几张多余的,
因此要删除多余的文件,保证每一张jpg对应一个txt文件。
"""
import os
images_dir = "./JPEGImages"
labels_dir = "./labels"
#删除多余的image,
labels = []
for label in os.listdir(labels_dir):
#labels.append(label.split('.')[0])#不能用这一行,因为有些文件名字前面就有 . 这样得到的文件名字是不对的。
labels.append(os.path.splitext(label)[0])
#print(labels)
for image_name in os.listdir(images_dir):
#image_name = image_name.split('.')[0] #不能用这一行,因为有些文件名字前面就有 .
image_name = os.path.splitext(image_name)[0]
#print(image_name)
if image_name not in labels:
image_name = image_name + ".jpg"
print(image_name)
#os.remove(os.path.join(images_dir, image_name))#删除图片,最开始先把这一行注释掉,运行下看看打印,以免误删导致数据还是重新做,
#删除多余的label
images = []
for image in os.listdir(images_dir):
#images.append(image.split('.')[0])#不能用这一行,因为有些文件名字前面就有 .
images.append(os.path.splitext(image)[0] )
for label_name in os.listdir(labels_dir):
#label_name = label_name.split('.')[0]#不能用这一行,因为有些文件名字前面就有 .
label_name = os.path.splitext(label_name)[0]
if label_name not in images:
label_name = label_name + ".txt"
print(label_name)
#os.remove(os.path.join(labels_dir, label_name))#删除label,最开始先把这一行注释掉,运行下看看打印,以免误删导致数据还是重新做,
作者:cumtchw