问题描述
目标检测过程中,数据集采用voc格式,图片文件与标签文件数目不一致,图片文件多于标签文件(二者是包含关系,不是交叉关系)导致服务器无法正常工作。
问题解决
1 首先读取Annotations文件夹下所有文件的名字
2 将Annotations文件夹下所有文件的名字后缀由‘xml’改为‘jpg’
3 遍历JEPGImages文件夹中的所有图片文件,读出名字与步骤2中名字相同的图片文件,并移动到另一个新文件夹
详细代码
import shutil
import os
#--------------------------------------------------------------
#读取Annotations文件夹下所有文件的名字并写入txt
path = "VOCdevkit/VOC2007/Annotations"
datanames = os.listdir(path)
f = open('H:/AnnotationsNames', 'w')
for i in datanames:
f.write(i)
f.write('\n')
f.close()
#--------------------------------------------------------------
#--------------------------------------------------------------
# 将Annotations中文件的名字删除后缀名xml,并改为jpg
f = open('H:/AnnotationsNames','r')
a = f.readlines()
f = open('H:/AnnotationsNamesXML2JPG','w')
for i in a:
f.write(i.replace("xml","jpg"))
#--------------------------------------------------------------
#--------------------------------------------------------------
#将Annotations文件夹中的文件与JPEGImages中的图片名字遍历对比,挑选出符合需求的图片
passwards = []
f = open('H:/AnnotationsNamesXML2JPG','r')
for i in f:
passwards.append(i.rstrip('\n'))
print(passwards)
# a = f.readlines()
# # a = a.remove('\n')
# print(a)
for i in passwards:
# 如果读到的ann的名字和jpg的名字一致,则提取出该文件
old = os.path.join('H:/JPEGImages', i)
shutil.move(old, 'H:/New_JPEGImages')
#--------------------------------------------------------------
结束语
希望本片博客能对大家有所帮助,也希望大家多多点赞评论转发,感谢大家!
版权声明:本文为ow147258369原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。