对xml的解析与操作在《python学习(二) ElementTree解析、读写、创建xml文件》一文中介绍完毕
本文主要是使用ElementTree对VOC数据集的xml操作的实例化
并附带一些实用小程序供大家参考使用,程序代码在下面的github网站中
https://github.com/A-mockingbird/VOCtype-datasetOperation
里面有统计VOC数据集各类别目标框数量、删除某一类别或修改某一类别名称等操作的代码
1.介绍一个简单的实例:统计自己创建voc数据集中各类别目标框数量
(1)import所需的库
import io
import sys
import os
import xml.etree.ElementTree as ET
如遇到编码问题
sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')
(2)解析xml文件
filepath为xml文件名
anno_path存储xml文件的文件夹路径
获取xml树结构
对xml树进行遍历,获取object(即目标)子类
对object中的目标框类别、位置信息解析,存入annos列表
返回annos及此xml文件中目标框数量num
def _ParseAnnotation(filepath):
if os.path.exists(anno_path + filepath) == False:
print(filepath+' :not found')
tree = ET.parse(anno_path + filepath)
annos = [None]*30
num = 0
for annoobject in tree.iter():
if 'object' in annoobj