You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
2.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#ifndef ARITH_TRACKER_H
#define ARITH_TRACKER_H
#pragma once
#include "Arith_Common.hpp"
#include "Arith_TrackSAObj.h"
#include "Arith_SkyTracker.h"
#include "Arith_GroundTracker.h"
#include "API_MOT_PipeProc.h"
#include "Arith_CustomTracker.h"
// 跟踪器中数据结构使用说明
/*
* TARGET_OBJECT -- 单帧跟踪结果
* OBJECTSTATUS -- 连续跟踪结果,每个跟踪器的主要输出内容
* PIPE -- 转入跟踪前的目标信息跟踪完毕后将跟踪信息更新到PIPE统一管理批号。
*/
//// 跟踪器参数,按照跟踪器类型分别设置
//typedef struct tagTracker_Param
//{
// Param_SkyTracker skyParam;
// Param_GroundTracker grdParam;
// Param_AITracker aiTParam;
//}Tracker_Param;
class Tracker
{
public:
// 使用默认参数初创建跟踪器
Tracker(SINT32 nWidth, SINT32 nHeight, GLB_SCEN_MODE type);
// 使用指定参数创建跟踪器
Tracker(SINT32 nWidth, SINT32 nHeight, GLB_SCEN_MODE type, ARIDLL_PARMA* pstArithPara);
~Tracker();
// 跟踪初始化:统一使用管道作为接口
bool Init(GD_VIDEO_FRAME_S img, PIPE* pLockPipe, GLB_INPUT* p_GLB_Input);
// 跟踪
bool Track(GD_VIDEO_FRAME_S img, GLB_INPUT* p_GLB_Input, API_MOT_PIPE* g_GLB_PipeProc, ARIDLL_PARMA* g_stArithPara);
// 记忆跟踪
SINT32 MemTrack(GD_VIDEO_FRAME_S img, GLB_INPUT* p_GLB_Input, API_MOT_PIPE* g_GLB_PipeProc, ARIDLL_PARMA* g_stArithPara);
// 跟踪器解锁
void Cancle();
//// 设置跟踪参数
//void SetParam(Tracker_Param PARA);
// 跟踪器重捕背景管道,用新管道重置tracker模型与运动模型保留原管道告警信息
bool ResetByBackPipe(PIPE* pNewPipe, GD_VIDEO_FRAME_S img, GLB_INPUT* p_GLB_Input,BBOOL bReInit);
//// 获取跟踪参数
//Tracker_Param GetParam();
// 输出跟踪框
RECT32S getTrackerBox();
//// 强制记忆跟踪
//void SetMemTrack(bool bMemFlag);
//// 跟踪器输出
bool UpdateTracker2Pipe(GLB_INPUT* p_GLB_Input, GLB_SCEN_MODE type, PIPE* pPipeOut,API_MOT_PIPE* g_GLB_PipeProc);
API_TLD* GetpTLDTracker();//返回跟踪器中的TLD对象实例指针
public:
GLB_SCEN_MODE m_type; //跟踪器类型,这里使用组合而非继承
SkyTracker* pSkyTracker;
GroundTracker* pGroundTracker;
AIT_Interface* pAitTracker;
CustomTracker* pCustomTracker;
OBJECTSTATUS ObjStatus;// 跟踪结果,用于输出
PIPE* m_LockingPipe;//锁定管道指针指向PIPE队列锁定目标初始化赋值
TrackUnlockState emTUFlag; // 目标锁定解锁标记
};
// 注意和cv::Tracker冲突所以这里使用::Tracker表明非namespace符号
// 以下三种取名方式均可
//#define Tracker_Ptr Tracker*
//using Tracker_Ptr = ::Tracker*;
typedef ::Tracker* Tracker_Ptr;
#endif