前言
进行目标检测网络数据集制作时,可根据需求生成不同格式的标签文件。
VOC数据集标签文件为XML格式
COCO数据集标签文件为JSON格式
本博客将根据XML文件格式,分享如何分解出标签文件中需要的参数信息。
XML标签文件示意图:
方法
使用以下代码可返回图像文件名、图像宽高、目标信息。
import xml.dom.minidom
xml_path = " XXXX/XXXX/X.xml" # 标签文件路径
domTree = xml.dom.minidom.parse(xml_path) # 打开xml文档
rootNode = domTree.documentElement # 返回文档对象
# 取出object,size,filename根标签下对应信息
object_node = rootNode.getElementsByTagName("object")
shape_node = rootNode.getElementsByTagName("size")
image_node = rootNode.getElementsByTagName("filename")
# 获取图像文件名
image_name = image_node[0].childNodes[0].data
# 获取图像宽高
for size in shape_node:
width = int(size.getElementsByTagName('width')[0].childNodes[0].data)
height = int(size.getElementsByTagName('height')[0].childNodes[0].data)
# 获取图像中目标信息
bboxes = []
for obj in object_node:
# 获取目标类别信息
class_name = obj.getElementsByTagName("name")[0].childNodes[0].data
# 获取目标位置信息
bndbox = obj.getElementsByTagName("bndbox")
for bbox in bndbox:
x1 = int(bbox.getElementsByTagName('xmin')[0].childNodes[0].data)
y1 = int(bbox.getElementsByTagName('ymin')[0].childNodes[0].data)
x2 = int(bbox.getElementsByTagName('xmax')[0].childNodes[0].data)
y2 = int(bbox.getElementsByTagName('ymax')[0].childNodes[0].data)
bboxes.append([class_name, x1, y1, x2, y2])
-------tbc------
有用请👍哦~