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.

103 lines
2.6 KiB

#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;
}Tracker_Param;
class Tracker
{
public:
// 使用默认参数初创建跟踪器
Tracker(SINT32 nWidth, SINT32 nHeight, GLB_SCEN_MODE type);
// 使用指定参数创建跟踪器
Tracker(SINT32 nWidth, SINT32 nHeight, GLB_SCEN_MODE type, Tracker_Param PARA);
~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);
// 跟踪器解锁
void Cancle();
// 输出AI跟踪器的控制决策信息
AIT_Command GetAIT_Cmd();
// 获取AI跟踪器结果
void SetAIT_Info(AIT_OUTPUT* out);
// 设置跟踪参数
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;
CustomTracker* pCustomTracker;
OBJECTSTATUS ObjStatus;// 跟踪结果,用于输出
PIPE* m_LockingPipe;//锁定管道指针指向PIPE队列锁定目标初始化赋值
};
// 注意和cv::Tracker冲突所以这里使用::Tracker表明非namespace符号
// 以下三种取名方式均可
//#define Tracker_Ptr Tracker*
//using Tracker_Ptr = ::Tracker*;
typedef ::Tracker* Tracker_Ptr;
#endif