#ifndef SY_HUMAN_TRACKER #define SY_HUMAN_TRACKER #include #define MAX_BG_NUM 2000 //ImgData #ifndef __SY_IMG__ #define __SY_IMG__ typedef struct sy_img { unsigned char * data_;//按opencv Mat格式存储的图像数据(bgrbgrbgr…) int w_;//图像宽度 int h_;//图像高度 int c_;//图像通道数,目前仅支持3通道 void set_data(int m_w, int m_h, int m_c, unsigned char * m_data) { w_ = m_w; h_ = m_h; c_ = m_c; data_ = m_data; //Shallow copy } } sy_img; #endif typedef struct fgInfo { int left;//行人包围框左上角横坐标 int right;//行人包围框右下角横坐标 int top;//行人包围框左上角纵坐标 int bottom;//行人包围框右下角纵坐标 float confidence;//行人检测框置信度得分 int center_x;//行人包围框中心点x int center_y;//行人包围框中心点y int ID;//行人跟踪ID float feature[128];//行人专属特征,可用来做ReID }fgInfo; typedef struct fgRet { fgInfo fginfo[MAX_BG_NUM];//上述结构体,代表一幅图中所有的框,最大支持2000个框,暂不可修改 int fgNum;//一幅图中框的数量(fginfo中的有效框数) }fgRet; /*功能:整个检测跟踪程序初始化,创建句柄 参数: Gpuid: 显卡ID, batch_size: 批处理数量,可以设置为视频路数 wh_flag: 视频帧的图像宽大于高时,设置为0,否则设置为1。 返回值:句柄 */ void *human_tracker_create( int gpuid, int batch_size, int wh_flag); /* 功能:资源释放 参数:句柄的地址 返回值:void */ void human_tracker_release(void **handle); /* 功能:对多张图像进行检测跟踪 参数: handle:句柄 batch_mat: sy_img类型的数组,存放多张图像。 batch_img_length:图像数量 trackresult: 每张图像的检测和跟踪结果,提前声明好的数组,数量为图像数,以fgRet类型存储。 返回值:-1 失败或其他错误码 0 成功 */ int human_tracker_process(void * handle, sy_img batch_mat[], int batch_img_length, fgRet trackresult[]); /* 功能:获得版本信息 参数:void 返回值:版本信息char* */ const char* getVersion(); #endif