今天在处理yolov5的数据集的时候发现,由于是用视频切帧作为数据集,很多人位置并没有变动因此用label_image一个一个打标签很浪费时间于是想批量复制xml标签
标签位置很相似,所以标签位置相同的标签就直接复制改名字改路径即可。
这是我的xml文件:
<annotation>
<folder>sleeping_to_frames</folder>
<filename>550.jpg</filename>
<path>/home/guoba/桌面/SlowFast-main/ava/frames/sleeping_to_frames/1950.xml</path>
<source>
<database>Unknown</database>
</source>
<size>
<width>2560</width>
<height>1440</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>sleeping</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>840</xmin>
<ymin>462</ymin>
<xmax>1251</xmax>
<ymax>924</ymax>
</bndbox>
</object>
</annotation>
这是python写的脚本:
for循环中
root.find('path').text是<path>的值所以需要修改其他属性用相同方法即可
from xml.etree import ElementTree as ET
import xml.dom.minidom
#打开xml文档
file_xml = r'/home/guoba/yolov5-6.0/test/sleeping_to_frames/550.xml'
#xml文件路径
tree = ET.parse(file_xml) # 类ElementTree
root = tree.getroot() # 类Element
#修改path类
path = root.find('path').text
for i in range(550,1960,10):
num = str(i)
root.find('path').text = ("/home/guoba/桌面/SlowFast-main/ava/frames/sleeping_to_frames/"+num+".xml")
#修改文件路径一值参数
tree = ET.ElementTree(root)
tree.write("/home/guoba/桌面/SlowFast-main/ava/frames/sleeping_to_frames/"+num+".xml")
#输出路径