python读取xml文件并修改object目标label的信息
- python读取xml文件并修改object目标label的信息
python读取xml文件并修改object目标label的信息
"""
python 读取xml文件内容并完成修改
"""
import os
import xml.etree.ElementTree as ET
from xml.dom.minidom import parse
def bboxes2xml(folder, img_name, width, height, gts, xml_save_to):
xml_file = open((xml_save_to + '/' + img_name + '.xml'), 'w')
xml_file.write('<annotation>\n')
xml_file.write(' <folder>' + folder + '</folder>\n')
xml_file.write(' <filename>' + str(img_name) + '.jpg' + '</filename>\n')
xml_file.write(' <size>\n')
xml_file.write(' <width>' + str(width) + '</width>\n')
xml_file.write(' <height>' + str(height) + '</height>\n')
xml_file.write(' <depth>3</depth>\n')
xml_file.write(' </size>\n')
for gt in gts:
xml_file.write(' <object>\n')
xml_file.write(' <name>' + str(gt[0]) + '</name>\n')
xml_file.write(' <pose>Unspecified</pose>\n')
xml_file.write(' <truncated>0</truncated>\n')
xml_file.write(' <difficult>0</difficult>\n')
xml_file.write(' <bndbox>\n')
xml_file.write(' <xmin>' + str(gt[1]) + '</xmin>\n')
xml_file.write(' <ymin>' + str(gt[2]) + '</ymin>\n')
xml_file.write(' <xmax>' + str(gt[3]) + '</xmax>\n')
xml_file.write(' <ymax>' + str(gt[4]) + '</ymax>\n')
xml_file.write(' </bndbox>\n')
xml_file.write(' </object>\n')
xml_file.write('</annotation>')
xml_file.close()
def byfinall(inputpath,xml_save_to):
listdir = os.listdir(inputpath)
for file in listdir:
file_name=file
if file.endswith("xml"):
file = os.path.join(inputpath, file)
tree = ET.parse(file)
root = tree.getroot()
tag_name = root.tag
print("输出根节点的名称:",tag_name)
size_dot=root.findall("size")
width_=size_dot[0].findall("width")[0].text
height_ = size_dot[0].findall("height")[0].text
depth_=size_dot[0].findall("depth")[0].text
print(width_,height_,depth_)
print("**"*10)
gts=[]
for object in root.findall("object"):
name_obj = object.findall("name")
name_text = name_obj[0].text
if name_text in ['Knife']:
name_text='knife'
print("%s类别的坐标为:..."%(name_text))
single_obj=[]
single_obj.append(name_text)
bndbox_object=object.find("bndbox")
xmin = bndbox_object.find('xmin').text
xmax = bndbox_object.find('xmax').text
ymin = bndbox_object.find('ymin').text
ymax = bndbox_object.find('ymax').text
single_obj.extend([xmin,ymin,xmax,ymax])
gts.append(single_obj)
print("xmin:",xmin,"ymin:",ymin,"xmax:",xmax,"ymax:",ymax)
folder='images'
img_name=os.path.splitext(file_name)[0]
width=width_
height=height_
bboxes2xml(folder, img_name, width, height, gts, xml_save_to)
if __name__ == '__main__':
"""
knife
cigarette
gun
down
violence
"""
inputpath=r"C:\Users\GuoQingru\Downloads\sigara"
xml_save_to = r'C:\Users\GuoQingru\Downloads\sigara\xml'
byfinall(inputpath,xml_save_to)