python批量拼接两个xml文件中的目标内容

您所在的位置:网站首页 批量图片拼接 python批量拼接两个xml文件中的目标内容

python批量拼接两个xml文件中的目标内容

2022-11-06 13:34| 来源: 网络整理| 查看: 265

文章目录 脚本书写背景一、完整程序如下总结

脚本书写背景

深度学习项目中,肯定会遇到这种情况,比如有两个单独的数据集(数据集图片相同或者有重复的数据),第一个数据集标签是睁眼、闭眼;另外一个数据集标签为打哈欠、人脸,标签格式都为voc格式,即xml文件。这时,我们不需要再任何一个数据集上再次标注想要的目标,而是可以通过python脚本,把两类xml合并成1个,操作非常的方便灵活,大大提高我们标注效率。一下是python脚本源码,欢迎使用~

提示:以下是本篇文章正文内容,下面案例可供参考

一、完整程序如下 from xml.etree.ElementTree import ElementTree, Element, parse import xml.etree.ElementTree as ET import os import shutil hole_path = r'F:\Red_Green_Light_data\A_s\rgyt_data\want_xml' arm_path = r'F:\Red_Green_Light_data\A_s\rgyt_data\img363_xml' out_path = r'F:\Red_Green_Light_data\A_s\rgyt_data\img363_xml2' # 格式化 def __indent(elem, level=0): i = "\n" + level*"\t" if len(elem): if not elem.text or not elem.text.strip(): elem.text = i + "\t" if not elem.tail or not elem.tail.strip(): elem.tail = i for elem in elem: __indent(elem, level+1) if not elem.tail or not elem.tail.strip(): elem.tail = i else: if level and (not elem.tail or not elem.tail.strip()): elem.tail = i for hole_xml in os.listdir(hole_path): # 将同名xml合并 if os.path.exists(os.path.join(arm_path,hole_xml)): print('fusing',hole_xml) tree_hole = parse(os.path.join(hole_path,hole_xml)) root_hole = tree_hole.getroot() # annotation new_hole = tree_hole tree_arm = parse(os.path.join(arm_path,hole_xml)) root_arm = tree_arm.getroot() # annotation object = (tree_arm.findall('object')) for i in range(len(object)): root_hole.append(object[i]) __indent(root_hole) new_hole.write(os.path.join(out_path,hole_xml)) # 不同名xml复制 else: print('copying',hole_xml) shutil.copy(os.path.join(hole_path,hole_xml), out_path) # 将不同名xml复制 for arm_xml in os.listdir(arm_path): if not os.path.exists(os.path.join(out_path,arm_xml)): print('copying') shutil.copy(os.path.join(arm_path, arm_xml), out_path) 总结

以上就是今天要讲的内容,脚本超级好用,学好python,大大提高工作效率!觉得还不错的,感谢关注收藏,后续还会继续分享好用的数据处理脚本。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3