#pragma once // 测试用跟踪器算法 #include "Arith_Common.hpp" #include "Arith_TrackSAObj.h" #include "KCF/API_KCF_Tracker.h" #include "Arith_BkgMonitor.h" #include "Arith_OccludeJudge.h" #include "Arith_ObjArrest.h" #include "Arith_AI_Tracker.h" #include "TLD/API_TLD.h" #include "Arith_Match.h" #include "Arith_OccJudgeAI.h" #include "Arith_AIDMonitor.h" #include "PIPE/API_MOT_PipeProc.h" #include "Arith_TrackNDYT.h" struct Param_CustomTracker { /* data */ }; class CustomTracker { public: CustomTracker(SINT32 nWidth, SINT32 nHeight); ~CustomTracker(); Param_CustomTracker mTrakingPara; // 跟踪初始化:统一使用管道作为接口 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); // 跟踪器解锁 void Cancle(); // 跟踪结果,用于输出 OBJECTSTATUS ObjStatus; //KCF跟踪结果 OBJECTSTATUS ObjStatusKCF; //AI跟踪结果 OBJECTSTATUS ObjStatusAI; PIPE* m_LockingPipe;//锁定管道指针,指向PIPE队列锁定目标,初始化赋值 // 遮挡判断模块 OccJudge* m_pOccJudgeKCF; OccJudgeAI* m_pOccJudgeAI; TrackEvent tkEventKCF; //KCF跟踪事件处置 AID_Monitor* Ai_DMonitor; //AI Detection 管道监控模块 TrackEvent tkEventAI; //AI跟踪事件处置 API_MOT_PIPE* m_pGLB_MOT_PIPE; // 多目标跟踪管道,背景目标监控信息 SINT32 m_nKCFResetCnt; SINT32 m_nAIResetCnt; SINT32 m_nAISeResetCnt; public: // 跟踪融合 bool TrackDecision(GD_VIDEO_FRAME_S img, GLB_INPUT* p_GLB_Input); bool TO_TrackDecisionOfMiddleObj_KCF_AI(GD_VIDEO_FRAME_S img, GLB_INPUT* p_GLB_Input); // 跟踪事件处理 void EventProcess(TrackEvent tkEvent, TrackEvent pEventAI, GD_VIDEO_FRAME_S img, PIPE* pLockingPipe,GLB_INPUT* p_GLB_Input); // 重捕获重置操作 void RecapRestProcess(TrackEvent tkEvent, GD_VIDEO_FRAME_S img, PIPE* pLockingPipe, GLB_INPUT* p_GLB_Input); //对地跟踪器状态更新 bool GroundTrackKCF(GD_VIDEO_FRAME_S img, GLB_INPUT* p_GLB_Input, API_KCF_Tracker* pKCFTracker, OccJudge* pOccJudge, TrackEvent* tkEventStatus, TLD_Para* pTLDPara); bool GroundTrackAI(GLB_INPUT* p_GLB_Input, AIT_Interface* pAITracker, OccJudgeAI* pOccJudge, TrackEvent* tkEventAI, TLD_Para* pTLDPara); //kcf跟踪器(通用) API_KCF_Tracker* m_pKCFTracker; NCCAccuracy* m_pNccCorrect; // TLD API_TLD* m_pTLDTracker; // 遮挡重捕模块 TargetArrest* m_pTargetArrest; // AI跟踪器信息接口 AIT_Interface* m_pAITracker; NDYT* m_pNDYTTracker; public: CENTERRECT getKCFTracker_SrBox(); // 获取TLD搜索波门 CENTERRECT getTLD_SrBox(); };