先看看转化前的xml文件数据
可以看出bndbox下的目标框的坐标值均为浮点数,下面是转化后的xml数据格式
转化时采用了四舍五入原则
话不多说,上代码
import os
import xml.etree.ElementTree as ET
path = r''#此处为xml文件的路径
def edit_xml(xml_file):
all_xml_file = os.path.join(path, xml_file)
tree = ET.parse(all_xml_file)
print(all_xml_file)
objs = tree.findall('object')
for ix, obj in enumerate(objs):
obj_bnd = obj.find('bndbox')
obj_xmin = obj_bnd.find('xmin')
obj_ymin = obj_bnd.find('ymin')
obj_xman = obj_bnd.find('xmax')
obj_yman = obj_bnd.find('ymax')
xmin = float(obj_xmin.text)
ymin = float(obj_ymin.text)
xmax = float(obj_xman.text)
ymax = float(obj_yman.text)
obj_xmin.text = str(round(xmin))
obj_ymin.text = str(round(ymin))
obj_xman.text = str(round(xmax))
obj_yman.text = str(round(ymax))
tree.write(all_xml_file, method='xml', encoding='utf-8')
if __name__ == '__main__':
files = os.listdir(path)
for i, file in enumerate(files):
if file.endswith('.xml'):
edit_xml(file)
OK
记录学习用,如有侵权,请联系删除