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.

112 lines
2.8 KiB

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