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