/******************************************************************************************* * Version: VPT_x64_V2.0.0_20170705 * CopyRight: �п�Ժ�Զ����о���ģʽʶ��ʵ����ͼ����Ƶ�� * UpdateDate: 20170705 * Content: �˳�������� ********************************************************************************************/ #pragma once #include "opencv2/highgui/highgui.hpp" #include #include "utools.h" #include #include #include "common.h" #include "./sort/Sort.h" //tracker using namespace std; struct TaskTracker { int TaskID; double ratioWidth; double ratioHeight; Sort tracker; unsigned int lastFrameIndex; vector< vector > lastDetectResult; vector lastDeleteObjectID; }; struct DataInfo { int task_id {-1}; sy_img img; unsigned long long frameIndex; }; struct VPTProcessResult { int task_id {-1}; VPT_Result vptResult; vector vecDeleteObj; vector vecUnUsedResult; unsigned long long ts; }; class VPTProcess { public: VPTProcess(/* args */); ~VPTProcess(); /************************************************************************* * PURPOSE: 初始化 * PARAM: [in] vparam 参数 * RETURN: handle * NOTES: *************************************************************************/ int init(int gpuid, int max_batch_size); /************************************************************************* * PURPOSE: 人车物检测跟踪 * PARAM: [in] handle - 处理句柄 [in] rgb - 图片数据(3通道BGR数据 cv::Mat格式) [in] width - 图片宽度 [in] height - 图片高度 [in] result - 搜索结果,在外部申请足够内存 [in] deleteObjectID - 删除的轨迹ID号 [out] traffic - 交通流量结果结构体 内存在外部申请,大小与初始化时流量监测线个数相同,设置为NULL时不返回 * RETURN: -1:图像错误; 其他:检测到的个数 * NOTES: *************************************************************************/ int process(sy_img * batch_img, int batchsize, vector vec_frameIndex, vector& result, vector>& deleteObjectID, vector>& unUsedResult); vector process(vector vec_data); /************************************************************************* * PURPOSE: 资源释放 * PARAM: [in] handle - 处理句柄 * RETURN: NULL * NOTES: *************************************************************************/ void release(); void AddTaskTracker(const int taskID, const double rWidth, const double rHeight); void FinishTaskTracker(const int taskID); void PauseTaskTracker(const int taskID); void RestartTaskTraker(const int taskID); void DrawTracker(const int taskID, cv::Mat *img); private: void config_fpn_param(ctools_init_params& param, int batch_size); void config_yolo_param(ctools_init_params& param, int batch_size); void check_VPT_Result(VPT_Result & vResult); private: int m_max_batch_size {20}; void* det_handle {nullptr}; vector taskTrackers; map m_taskTrackerMap; };