annotations_dir='./VOC2007/Annotations'#标注信息
out_path_train='/home/zuo/PycharmProjects/untitled/voc2coco-pattern-master/train_xml'
out_path_test='/home/zuo/PycharmProjects/untitled/voc2coco-pattern-master/test_xml'
out_path_val='/home/zuo/PycharmProjects/untitled/voc2coco-pattern-master/val_xml'import os
if os.path.exists(out_path_train):print('true')else:
os.mkdir(out_path_train)if os.path.exists(out_path_test):print('true')else:
os.mkdir(out_path_test)if os.path.exists(out_path_val):print('true')else:
os.mkdir(out_path_val)from xml.etree.ElementTree import ElementTree, Element
o=[]for filename in os.listdir(annotations_dir):
o.append(filename[:-4])print(len(o))
n=len(o)#print(o)defread_xml(in_path):'''''读取并解析xml文件
in_path: xml路径
return: ElementTree'''
tree = ElementTree()
tree.parse(in_path)return tree
defwrite_xml(tree, out_path):'''''将xml文件写出
tree: xml树
out_path: 写出路径'''
tree.write(out_path, encoding="utf-8", xml_declaration=True)#o=[]#存储所有的标注信息
T=os.listdir(annotations_dir)print(os.listdir(annotations_dir))for i inrange(len(os.listdir(annotations_dir))):while i<=0.8* n:print(T[i])
tree=read_xml(annotations_dir+'/'+T[i])print(tree)
write_xml(tree, out_path_train+'/'+T[i])breakwhile0.9* n>i>0.8*n:print(T[i])
tree = read_xml(annotations_dir +'/'+ T[i])
write_xml(tree, out_path_test+'/'+T[i])breakwhile i >=0.9* n:print(T[i])
tree = read_xml(annotations_dir +'/'+ T[i])
write_xml(tree, out_path_val+'/'+T[i])break#o.append(filename[:-4])#print(len(o))#print(o)'''
for i in range(len(o)):
print('{}\n'.format(o[i][:-4]))#\n换行
def write_txt(txt,o):#写入文本信息,参数分别为:路径,即将写入的列表
with open(txt,'w') as f:
for i in range(len(o)):
f.write('{}\n'.format(o[i]))#\n换行
def read_txt(txt):#阅读文本信息
lines = []
with open(txt, 'r') as f:
for eachline in f:
eachline = eachline.strip('\n')
eachline = str(eachline)
#line = eachline + '.bmp'
#print(line)
lines.append(eachline)
#splitlines = [x.strip().split(' ') for x in lines]
return lines#返回带类列表
#quan=read_txt(r'D:\research\ce_Faster-RCNN-TensorFlow-Python3-master\data\VOCdevkit2007\VOC2007\ImageSets\Main\quan.txt')
#print(quan,len(quan))
quan=o
n=len(quan)
n1=int(0.2*n)#安装8:2分配数据集进行交叉验证
test1=quan[0:n1]
train1=[k for k in quan if k not in test1]#取补集合
print(test1)
print(train1)
test2=quan[n1:2*n1]
train2=[k for k in quan if k not in test2]
print(test2)
print(train2)
test3=quan[2*n1:3*n1]
train3=[k for k in quan if k not in test3]
print(test3)
print(train3)
test4=quan[3*n1:4*n1]
train4=[k for k in quan if k not in test4]
print(test4)
print(train4)
test5=quan[4*n1:]
train5=[k for k in quan if k not in test5]
print(test5)
print(train5)
write_txt('./trainval1.txt',train1)
write_txt('./test1.txt',test1)
write_txt('./trainval2.txt',train2)
write_txt('./test2.txt',test2)
write_txt('./trainval3.txt',train3)
write_txt('./test3.txt',test3)
write_txt('./trainval4.txt',train4)
write_txt('./test4.txt',test4)
write_txt('./trainval5.txt',train5)
write_txt('./test5.txt',test5)
quan1=len(read_txt('./test1.txt'))+len(read_txt('./trainval1.txt'))
quan2=len(read_txt('./test2.txt'))+len(read_txt('./trainval2.txt'))
quan3=len(read_txt('./test3.txt'))+len(read_txt('./trainval3.txt'))
quan4=len(read_txt('./test4.txt'))+len(read_txt('./trainval4.txt'))
quan5=len(read_txt('./test5.txt'))+len(read_txt('./trainval5.txt'))
print(quan1,quan2,quan3,quan4,quan5)
'''