人群计数,标注的xml文件提取坐标信息存到.npy文件中

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值