import xml.etree.ElementTree as ET
import os
def parse_rec(filename):
tree = ET.parse(filename) # 解析读取xml函数
objects = []
img_dir =[]
for obj in tree.findall('object'):
obj_struct = {}
obj_struct['name'] = obj.find('name').text
bbox = obj.find('bndbox')
obj_struct['bbox'] = [int(bbox.find('xmin').text),
int(bbox.find('ymin').text),
int(bbox.find('xmax').text),
int(bbox.find('ymax').text)]
objects.append(obj_struct)
return objects
def save_objects(txt_base, objects):
with open(txt_base, 'w') as f:
for object in objects:
temp = []
temp.append(object['name'])
for box in object['bbox']:
temp.append(' ' + str(box))
f.writelines(temp)
f.write('\n')
root = '.'
xml_base = os.path.join(root, 'XML') # xml文件所在路径
txt_base = os.path.join(root, 'TXT') # txt文件所在路径
for filename in os.listdir(xml_base):
xml_path = os.path.join(xml_base, filename)
object = parse_rec(xml_path)
txt_path = os.path.join(txt_base, filename.replace('xml', 'txt'))
save_objects(txt_path, object)