因为用labelimg给图片打标签的时候打错了,本来是water dispenser弄成了drinking_fountain了,尴尬_(:з)∠)_,并且已经标了1500张了,只能自己写程序改,xml文件示例如下:
<?xml version='1.0' encoding='us-ascii'?>
<annotation verified="no">
<folder>drinking_fountain</folder>
<filename>1</filename>
<path>E:\LabelImgv1.3.3\windows_v1.3.3\drinking_fountain\1.jpg</path>
<source>
<database>Unknown</database>
</source>
<size>
<width>720</width>
<height>1280</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>drinking_fountain</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>153</xmin>
<ymin>6</ymin>
<xmax>587</xmax>
<ymax>1157</ymax>
</bndbox>
</object>
</annotation>
用来修改的python代码的如下:
import os
import os.path
from xml.etree.ElementTree import parse, Element
#批量修改xml中内容
def test():
path = "E:\LabelImgv1.3.3\windows_v1.3.3\drinking_fountain_label/"#xml文件所在的目录
files = os.listdir(path) # 得到文件夹下所有文件名称
s = []
for xmlFile in files: # 遍历文件夹
if not os.path.isdir(xmlFile): # 判断是否是文件夹,不是文件夹才打开
print
xmlFile
pass
path = "E:\LabelImgv1.3.3\windows_v1.3.3\drinking_fountain_label/"
print(xmlFile)
path1 = "E:\LabelImgv1.3.3\windows_v1.3.3\drinking_fountain_label/"+xmlFile#定位当前处理的文件的路径
newStr = os.path.join(path, xmlFile)
name = "water dispenser"
dom = parse(newStr) ###最核心的部分,路径拼接,输入的是具体路径
root = dom.getroot()
print(root)
for obj in root.iter('object'):#获取object节点中的name子节点
obj.find('name').text=name
name1 = obj.find('name').text#修改
print(name1)
dom.write(path1, xml_declaration=True)#保存到指定文件
pass
if __name__ == '__main__':
test()