由于标注时候的粗心大意,pedestrian被写的五花八门,因此标注生成的xml文件里的name节点就不统一,后续读入就会出错。
因此就需要统一更改name节点的pedestrian,如果不是pedestrian就改成pedestrian,简单但有效。
# coding:utf-8 # fuction:批量纠正节点<name/>的pedestrian # date:20210923 import os import os.path import xml.dom.minidom # path="../xml/" path = '/home/xl/WorkShop_Dataset/annores/ALL_People_Annotations/val/' files = os.listdir(path) # 得到文件夹下所有文件名称 s = [] for xmlFile in files: # 遍历文件夹 if not os.path.isdir(xmlFile): # 判断是否是文件夹,不是文件夹才打开 print(xmlFile) # xml读取操作 # 将获取到的xml文件名送入到dom解析 # 错误代码:dom=xml.dom.minidom.parse(xmlFile) dom = xml.dom.minidom.parse(os.path.join(path, xmlFile)) root = dom.documentElement ###获取标签对name的值 # xmin = root.getElementsByTagName('xmin') # ymin = root.getElementsByTagName('ymin') name = root.getElementsByTagName('name') # 修改相应标签的值 for i in range(len(name)): if name[i].firstChild==None: break else: # a = name[i].firstChild.data # print(type(a)) if name[i].firstChild.data != 'pedestrian': print(name[i].firstChild.data) name[i].firstChild.data = 'pedestrian' print(name[i].firstChild.data) #if=='pedestrian' break #else # # for j in range(len(ymin)): # print # ymin[j].firstChild.data # ymin[j].firstChild.data = 100 # print # ymin[j].firstChild.data # 保存修改到xml文件中 with open(os.path.join(path, xmlFile), 'w') as fh: dom.writexml(fh) print('恭喜,写入name成功!')