python批量修改xml文件内容

由于cityperson数据集图片较大,因此将图片裁剪成4份,同时对应修改标注信息

链接: cityperson图片裁剪.

修改前的xml文件 aachen_000000_000019_leftImg8bit.xml
python批量修改xml文件内容_第1张图片

 #python
import xml.etree.ElementTree as ET
import numpy as np
import os
'''由于cityperson行人数据集图片较大,将图片裁剪成4份,同时对应修改标注信息其中左下裁剪图片代码如下,其他位置对应修改裁剪坐标即可,同时修改标注信息。'''
i=1000000
#批量修改Xml文件#xml文件存放路径/文件夹xml_path=r'F:\cityperson\citypersons2voc-master\cps_dvkt_w10hv50_ignore1\data\Annotations\\'
filelist = os.listdir(xml_path)#获取所有的.xml文件
for filename in filelist:    #遍历所有的.xml文件
    tree=ET.parse(xml_path + filename)#打开文件    #objs=tree.findall('object')    
    root = tree.getroot()    
    for wid in root.findall('size'):#查找“size”属性
        wid.find('width').text='1280'#修改width值 
        wid.find('height').text='768'#修改height值    
        #删除不符合要求的bbox框    
    for obj in root.findall('object'):        
    #print(obj)        
        bbox=obj.find('bndbox')        
        #print(bbox)        
        #获取bbox坐标信息
        x1=float(bbox.find('xmin').text)-1
        y1=float(bbox.find('ymin').text)-1
        x2=float(bbox.find('xmax').text)-1
        y2=float(bbox.find('ymax').text)-1
        if x2<=1280 and y2<=768: 
        #由于左下裁剪图片都是从0开始,无需修改标注
           continue        
        else:            
           root.remove(obj)#删除bndbox    
    #另保存XML文件    
    path='F:\cityperson\citypersons2voc-master\cps_dvkt_w10hv50_ignore1\data\Annotations_1'
    savepath=os.path.join(path,str(i)+'.xml')
    tree.write(savepath)    
    i=i+1
print('完成')

修改后的xml文件 aachen_000000_000019_leftImg8bit.xml
python批量修改xml文件内容_第2张图片

你可能感兴趣的:(深度学习,python,python,深度学习)