python读xml文件生成头文件_python如何读取&生成voc xml格式标注信息

本文介绍了如何使用Python的lxml库生成和读取VOC XML格式的标注信息。首先展示了一个名为GEN_Annotations的类,用于创建XML文件,包括设置图像的尺寸、添加对象标注等。然后提供了一个函数GetAnnotBoxLoc来读取XML文件中的标注边界框信息。通过这两个功能,可以方便地处理VOC数据集的XML标注。
摘要由CSDN通过智能技术生成

python生成voc xml文件

from lxml import etree

class GEN_Annotations:

def __init__(self, filename):

self.root = etree.Element("annotation")

child1 = etree.SubElement(self.root, "folder")

child1.text = "VOC2007"

child2 = etree.SubElement(self.root, "filename")

child2.text = filename

child3 = etree.SubElement(self.root, "source")

child4 = etree.SubElement(child3, "annotation")

child4.text = "PASCAL VOC2007"

child5 = etree.SubElement(child3, "database")

child5.text = "Unknown"

child6 = etree.SubElement(child3, "image")

child6.text = "flickr"

child7 = etree.SubElement(child3, "flickrid")

child7.text = "35435"

def set_size(self,witdh,height,channel):

size = etree.SubElement(self.root, "size")

widthn = etree.SubElement(size, "width")

widthn.text = str(witdh)

heightn = etree.SubElement(size, "height")

heightn.text = str(height)

channeln = etree.SubElement(size, "depth")

channeln.text = str(channel)

def savefile(self,filename):

tree = etree.ElementTree(self.root)

tree.write(filename, pretty_print=True, xml_declaration=False, encoding='utf-8')

def add_pic_attr(self,label,xmin,ymin,xmax,ymax):

object = etree.SubElement(self.root, "object")

namen = etree.SubElement(object, "name")

namen.text = label

bndbox = etree.SubElement(object, "bndbox")

xminn = etree.SubElement(bndbox, "xmin")

xminn.text = str(xmin)

yminn = etree.SubElement(bndbox, "ymin")

yminn.text = str(ymin)

xmaxn = etree.SubElement(bndbox, "xmax")

xmaxn.text = str(xmax)

ymaxn = etree.SubElement(bndbox, "ymax")

ymaxn.text = str(ymax)

if __name__ == '__main__':

filename="000001.jpg"

anno= GEN_Annotations(filename)

anno.set_size(1280,720,3)

for i in range(3):

xmin=i+1

ymin=i+10

xmax=i+100

ymax=i+100

anno.add_pic_attr("mouse",xmin,ymin,xmax,ymax)

anno.savefile("00001.xml")

python读取voc xml文件

try:

import xml.etree.cElementTree as ET

except ImportError:

import xml.etree.ElementTree as ET

def GetAnnotBoxLoc(AnotPath):

tree = ET.ElementTree(file=AnotPath)

root = tree.getroot()

ObjectSet=root.findall('object')

ObjBndBoxSet={}

for Object in ObjectSet:

ObjName=Object.find('name').text

BndBox=Object.find('bndbox')

x1 = int(BndBox.find('xmin').text)

y1 = int(BndBox.find('ymin').text)

x2 = int(BndBox.find('xmax').text)

y2 = int(BndBox.find('ymax').text)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值