#ifndef SY_HUMAN_TRACKER
|
#define SY_HUMAN_TRACKER
|
#include<vector>
|
#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
|