72 lines
2.5 KiB
Python
72 lines
2.5 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""
|
||
Created on Mon Mar 10 09:33:35 2025
|
||
基准数据集筛选,选取tracking输出多个轨迹的事件
|
||
|
||
@author: ym
|
||
"""
|
||
import os
|
||
import numpy as np
|
||
|
||
import sys
|
||
sys.path.append(r"D:\DetectTracking")
|
||
from tracking.utils.read_data import extract_data, read_tracking_output_realtime
|
||
|
||
|
||
def get_multitraj_file(spath, pattern):
|
||
multi_traj_events = []
|
||
n = 0
|
||
for evtname in os.listdir(spath):
|
||
name, ext = os.path.splitext(evtname)
|
||
eventpath = os.path.join(spath, evtname)
|
||
|
||
evt = name.split('_')
|
||
condt = len(evt)>=2 and evt[-1].isdigit() and len(evt[-1])>=8
|
||
if not condt: continue
|
||
if not os.path.isdir(eventpath): continue
|
||
|
||
trackingboxes = []
|
||
for dataname in os.listdir(eventpath):
|
||
if os.path.splitext(dataname)[-1] in [".jpg", ".png"]:
|
||
continue
|
||
|
||
datapath = os.path.join(eventpath, dataname)
|
||
if not os.path.isfile(datapath): continue
|
||
CamerType = dataname.split('_')[0]
|
||
|
||
if pattern=="realtime" and dataname.find("_tracking_output.data")>0:
|
||
trackingboxes, trackingfeats, tracking_outboxes, tracking_outfeats = read_tracking_output_realtime(datapath)
|
||
if pattern=="evtsplit" and dataname.find("_track.data")>0:
|
||
bboxes, ffeats, trackerboxes, trackerfeats, trackingboxes, trackingfeats = extract_data(datapath)
|
||
|
||
if len(trackingboxes)>=2:
|
||
multi_traj_events.append(evtname)
|
||
n += 1
|
||
print(f"{n}: {evtname}")
|
||
break
|
||
|
||
|
||
multi_traj_file = os.path.join(spath, "multi_traj_file.txt")
|
||
with open(multi_traj_file, "w") as file:
|
||
for item in multi_traj_events:
|
||
file.write(item + "\n")
|
||
|
||
def main():
|
||
spaths = [r"\\192.168.1.28\share\测试视频数据以及日志\各模块测试记录\比对测试\1212",
|
||
r"\\192.168.1.28\share\测试视频数据以及日志\各模块测试记录\比对测试\1216",
|
||
r"\\192.168.1.28\share\测试视频数据以及日志\各模块测试记录\比对测试\1218",
|
||
r"\\192.168.1.28\share\测试视频数据以及日志\各模块测试记录\比对测试\202412"
|
||
]
|
||
|
||
pattern = "evtsplit" # realtime # 全实时版、事件切分版数据读取方式
|
||
for spath in spaths:
|
||
get_multitraj_file(spath, pattern)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
if __name__ == '__main__':
|
||
main() |