#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