import os
import cv2
from xml.dom import minidom
import numpy as np
file_dir = 'F:/dataset/data2/testAnno'
files = os.listdir(file_dir)
print(files)
for file in files:
path = file_dir+'/'+file
# 读xml文件
dom = minidom.parse(path)
base = os.path.basename(path)
lastbase = base.split('.')[0]
# 获取根节点
root = dom.documentElement
# 按照名称查找子节点,注意这里会递归查找所有子节点
tracks = root.getElementsByTagName('track')
print("tracks:", len(tracks))
pointlist = []
m = 0
for track in tracks:
x1y1 = []
xy = ()
plist = []
# 获取track的子节点point
points = track.getElementsByTagName('point')
m = m + 1
for point in points:
frames = point.getAttribute('frame')
# 获取point的属性值
occluded = point.getAttribute('occluded')
outside = point.getAttribute('outside')
x = point.getAttribute('x')
y = point.getAttribute('y')
x = int(x)
y = int(y)
# 放入元组中
xy = (x, y)
# print(xy)
# 放入列表中,把一些不该出现的坐标点置为-1
if occluded == "1" or outside == "1":
xy = (-1, -1)
xy = list(xy)
# print(xy)
plist.append(xy)
# print(plist)
pointlist.append(plist)
# print(pointlist)
# print(pointlist) # 打印x,y坐标
print("帧数:", frames)
print("***********************************************************************************************")
print("***********************************************************************************************")
num = 1
for j in range(int(frames) + 1):
gt_point = []
for i in range(0, len(tracks)):
p2 = pointlist[i][j]
gt_point.append(p2)
saveFile = "F:/dataset/data2/testnpy/" # 保存文件的路径
print(num)
print(gt_point)
np.save(saveFile + lastbase + '_' + str(num) + '.npy', gt_point)
num += 1
人群计数,标注的xml文件提取坐标信息存到.npy文件中
最新推荐文章于 2024-07-10 09:15:55 发布