VPTProcess.h 2.3 KB
/*******************************************************************************************
* Version: VPT_x64_V2.0.0_20170705
* CopyRight: 中科院自动化研究所模式识别实验室图像视频组
* UpdateDate: 20170705
* Content: 人车物监测跟踪
********************************************************************************************/
#ifndef __AI_ENGINE_MODULE_VPT__
#define __AI_ENGINE_MODULE_VPT__

#include <iostream>
#include <vector>
#include <string>
#include "sort/Sort.h"
#include "acl/acl.h"
#include "acl/ops/acl_dvpp.h"
#include "../util/vpc_util.h"
#include "../util/JpegUtil.h"

#include "ai_engine_header.h"

using namespace std;

// #define THRESHOLD 0.45
#define THRESHOLD 0.3

struct TaskTracker
{
	string TaskID;
	double ratioWidth;
	double ratioHeight;
	Sort tracker;
};


typedef struct VPTProcess_PARAM
{
	int gpuid;              //指定显卡id
	float threshold;
	int max_batch;

	char* serialize_file;
	char* auth_license;
    string model_dir;
	VPTProcess_PARAM() : gpuid(0), threshold(0.6), max_batch(20) {};
}VPTProcess_PARAM;

class VPTProcess {

public:
    VPTProcess();
    ~VPTProcess();
    /*************************************************************************
    * FUNCTION: VPT_Init
    * PURPOSE: 初始化
    * PARAM:
    [in] vparam		参数
    * RETURN:	handle
    * NOTES:
    *************************************************************************/
    int init(VPTProcess_PARAM vparam);

    int process(vector<DeviceMemory*> vec_vptMem, vector<onelevel_det_result>& result, vector<vector<int>>& deleteObjectID, vector<vector<onelevel_det_result>>& unUsedResult);

    /*************************************************************************
    * FUNCTION: VPT_Release
    * PURPOSE: 资源释放
    * PARAM:
    [in] handle		- 处理句柄
    * RETURN:	NULL
    * NOTES:
    *************************************************************************/
    void release();


    void addTaskTracker(const string taskID, double rWidth =1, double rHeight=1, int skip_frame=5); //221117byzsh
    bool finishTaskTracker(const string taskID);

private:
    int m_devId; 
    aclrtContext m_algorthim_ctx;
    JpegUtil jpegUtil;
    void* m_det_handle{nullptr};
	float threshold{0.6};
	int m_max_batchsize;
	map<string, TaskTracker> taskTrackers;
};


#endif      // __AI_ENGINE_MODULE_VPT__