144cd8c4
Hu Chunming
v6.0.0 替换模型
|
1
2
|
/*******************************************************************************************
* Version: VPT_V4.0.4
|
6ca63d90
Hu Chunming
提交v4.0.0
|
3
|
* CopyRight: 中科院自动化研究所模式识别实验室图像视频组
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
4
|
* UpdateDate: 20190701
|
6ca63d90
Hu Chunming
提交v4.0.0
|
5
|
* Content: 人车物监测跟踪
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
********************************************************************************************/
#ifndef VPT_H_
#define VPT_H_
#ifdef _MSC_VER
#ifdef VPT_EXPORTS
#define VPT_API __declspec(dllexport)
#else
#define VPT_API __declspec(dllimport)
#endif
#else
#define VPT_API __attribute__ ((visibility ("default")))
#endif
#include <stdio.h>
|
6ca63d90
Hu Chunming
提交v4.0.0
|
21
|
#include "header.h" //回调函数定义头文件
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
22
23
24
25
26
27
28
29
30
|
using namespace std;
extern "C"
{
|
6ca63d90
Hu Chunming
提交v4.0.0
|
31
|
typedef struct VPT_ObjInfo //检测物体结果结构体
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
32
|
{
|
6ca63d90
Hu Chunming
提交v4.0.0
|
33
34
35
36
37
38
39
40
41
|
int left; //检测结果左坐标
int top; //检测结果上坐标
int right; //检测结果右坐标
int bottom; //检测结果下坐标
int center_x; //检测结果中心位置X坐标
int center_y; //检测结果中心位置Y坐标
int index; //行人/车辆类别,支持9类
long id; //目标唯一ID,同一ID为同一目标
double confidence; //置信度
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
42
43
44
|
}VPT_ObjInfo;
|
6ca63d90
Hu Chunming
提交v4.0.0
|
45
|
typedef struct VPT_Result //检测结果结构体
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
46
|
{
|
6ca63d90
Hu Chunming
提交v4.0.0
|
47
48
|
int objCount; //检测到物体总数
VPT_ObjInfo *obj; //各个物体的结果信息
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
49
50
51
|
}VPT_Result;
|
6ca63d90
Hu Chunming
提交v4.0.0
|
52
53
|
//规定9个检测种类的最小检测框
//行人 自行车 摩托车 三轮车 小型车 大车 卡车 拖拉机 中巴
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
54
55
56
|
const int DETECTTYPE = 9;
const int EDGES = 4;
|
6ca63d90
Hu Chunming
提交v4.0.0
|
57
|
typedef struct MRECT //检测框
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
58
|
{
|
6ca63d90
Hu Chunming
提交v4.0.0
|
59
60
61
62
|
int width; //检测框宽度
int height; //检测框高度
MRECT(){ width = 0; height = 0; } //构造函数
MRECT(int w, int h){ width = w; height = h; } //构造函数
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
63
64
65
66
67
|
}MRECT;
typedef struct SNAPSHOT_PARAMETER
{
|
6ca63d90
Hu Chunming
提交v4.0.0
|
68
69
70
71
72
|
bool selectFromMinbox; //选取快照时,是否需要剔除掉小于Minbox的快照
bool selectFromMindistance; //选取快照时,是否需要剔除掉距边框的距离小于minDistance的快照
MRECT minBoxsize[DETECTTYPE]; //自定义的minBoxsize大小
int minDistance[EDGES]; //自定义的minDistance大小
SNAPSHOT_PARAMETER(){ selectFromMinbox = true; selectFromMindistance = true; } //构造函数
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
73
74
75
|
}SNAPSHOT_PARAMETER;
|
6ca63d90
Hu Chunming
提交v4.0.0
|
76
|
typedef struct VPT_PARAM //VPT设置参数结构体
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
77
|
{
|
6ca63d90
Hu Chunming
提交v4.0.0
|
78
79
80
81
82
83
84
|
int gpuid; //显卡ID号
int maxResultCount; //最大检测前景个数
// float thres;
char* serialize_file;
SNAPSHOT_PARAMETER *SnaoshotParameter; //快照保存参数设置
VPT_PARAM(){ SnaoshotParameter = NULL; serialize_file = NULL;}
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
85
86
87
88
89
|
}VPT_PARAM;
/*************************************************************************
* FUNCTION: VPT_Init
|
6ca63d90
Hu Chunming
提交v4.0.0
|
90
|
* PURPOSE: 初始化
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
91
|
* PARAM:
|
6ca63d90
Hu Chunming
提交v4.0.0
|
92
93
94
95
96
|
[in] handle - 句柄
[in] vparam - 参数
[in] resDir - 快照保存路径
[in] VideoObjSnapshotCallBack - 结果返回回调函数
* RETURN: 成功(0)或错误代码(< 0)
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
97
98
99
100
101
102
103
|
* NOTES:
*************************************************************************/
VPT_API int VPT_Init(void **handle, VPT_PARAM vparam, char* resDir, VIDEO_OBJECT_SNAPSHOT_CALLBACK VideoObjSnapshotCallBack = NULL);
/*************************************************************************
* FUNCTION: VPT_ResetTracker
|
6ca63d90
Hu Chunming
提交v4.0.0
|
104
|
* PURPOSE: 重置跟踪器
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
105
|
* PARAM:
|
6ca63d90
Hu Chunming
提交v4.0.0
|
106
|
[in] handle - 操作句柄
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
107
108
109
110
111
112
113
114
|
* RETURN: NULL
* NOTES:
*************************************************************************/
VPT_API void VPT_ResetTracker(void * handle);
/*************************************************************************
* FUNCTION: VPT_Process
|
6ca63d90
Hu Chunming
提交v4.0.0
|
115
|
* PURPOSE: 人车物检测跟踪
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
116
|
* PARAM:
|
6ca63d90
Hu Chunming
提交v4.0.0
|
117
118
119
120
121
122
123
124
125
|
[in] handle - 处理句柄
[in] rgb - 图片数据(3通道BGR数据 cv::Mat格式)
[in] width - 图片宽度
[in] height - 图片高度
[in] channels - 图片通道数
[in] frameCount - 视频当前的帧数
[in] result - 目标检测结果
[in] showTrack - 是否显示轨迹
* RETURN: 成功(0)或错误代码(< 0)
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
126
127
128
129
130
131
|
* NOTES:
*************************************************************************/
VPT_API int VPT_Process(void * handle, unsigned char *bgr, int width, int height, int channels, int frameCount, VPT_Result *result, bool showTrack);
/*************************************************************************
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
132
|
* FUNCTION: VPT_Release
|
6ca63d90
Hu Chunming
提交v4.0.0
|
133
|
* PURPOSE: 资源释放
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
134
|
* PARAM:
|
6ca63d90
Hu Chunming
提交v4.0.0
|
135
|
[in] handle - 处理句柄
|
144cd8c4
Hu Chunming
v6.0.0 替换模型
|
136
137
138
139
140
141
142
|
* RETURN: NULL
* NOTES:
*************************************************************************/
VPT_API void VPT_Release(void **handle);
}
#endif
|