zhangmeng
2019-12-06 4fa68b801541cc4e2545147871f7a40268e4fc8f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#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