#ifndef C_HUMAN_TRACKER
|
#define C_HUMAN_TRACKER
|
|
#include <string.h>
|
#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
|