|
|
|
|
#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();
|
|
|
|
|
|
|
|
|
|
};
|