import os
import xml.etree.ElementTree as ET
######## 解析xml的基本信息 ##################
import numpy as np
def per_xml(self):
filename = os.listdir(self.path_dir)
# step1 解析根路径,获取图片大小信息
for file in filename:
tree = ET.parse(file)
root = tree.getroot()
bb_box = []
lable = []
size_tree = root.find('size')
width = float(size_tree.find('width').text)
height =float(size_tree.find('height').text)
#获取每张图片里的多个对象的信息
for object_tree in root.findall('object'):
for box in object_tree.iter("bndbox"):
xmin = float(box.find('xmin').text)/width #除以宽主要是进行归一化的结果
ymin = float(box.find('ymin').text)/height
xmax = float(box.find('xmax').text)/width
ymax = float(box.find('ymax').text) / height
bb_box1 = [xmin,ymin,xmax,ymax]
bb_box.append(bb_box1)
lable1 = object_tree.find('name').text
one_hot_lable = self.one_hot(lable1)
lable.append(one_hot_lable)
# 获取图片名字,保存bb_box以及类别的one-hot编码信息
image_name = root.find('filename').text
bounding_boxes = np.asarray(bb_box)
one_hot_classes = np.asarray(lable)
image_data = np.hstack ((bounding_boxes,one_hot_classes))#按照维度拼接
self.data[ image_name] = image_data
学习笔记一:xml文件的读取操作,
该代码段展示了一个用于解析XML文件的函数,主要处理图像数据的边界框信息和类别标签。它读取XML文件,提取图像的尺寸、每个对象的边界框坐标,并进行归一化处理。同时,它还进行one-hot编码以表示类别信息,最终将这些信息与图像名称一起存储。这个过程对于图像识别或目标检测的预处理至关重要。
摘要由CSDN通过智能技术生成