vehicle_pose.h
4.77 KB
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
/*******************************************************************************************
* Version: car_pose_v0.0.0.20210519
* CopyRight: 中科视语(北京)科技有限公司
* UpdateDate: 20210519
* Content: 车辆姿态估计
********************************************************************************************/
#ifndef _VEHICLE_POSE_H_
#define _VEHICLE_POSE_H_
#ifdef _MSC_VER
#ifdef VEHICLE_POSE_EXPORTS
#define VEHICLE_POSE_API __declspec(dllexport)
#else
#define VEHICLE_POSE_API __declspec(dllimport)
#endif
#else
#define VEHICLE_POSE_API __attribute__ ((visibility ("default"))) //?
#endif
#include "sy_common.h"
#define MAX_OBJ_COUNT 200
//#define _VEHICLE_DET_
#ifdef __cplusplus
extern "C"
{
#endif
#define POSE_COUNT 9
// #define LDMK_COUNT 20
#define LDMK_COUNT 32 //221104版本有32个关键点
#ifndef __VEHICLE_POSE_RESULT__
#define __VEHICLE_POSE_RESULT__
typedef struct vehicle_pose_result
{
sy_point vehicle_ldmk[LDMK_COUNT];
float vehicle_ldmk_score[LDMK_COUNT];
float vehicle_pose[POSE_COUNT];
double phi;
double gamma;
double theta;
}vehicle_pose_result;
#endif
#ifndef __VEHICLE_POSE_PARAM__
#define __VEHICLE_POSE_PARAM__
typedef struct vehicle_pose_param
{
// int mode; /运行模式(DEVICE_GPU / DEVICE_CPU)
int devId; //运行卡号
char* modelNames;
float ldmk_thres; //ldmk点的阈值
// int engine; //指定运行引擎(ENGINE_MCAFFE2 / ENGINE_TENSORRT)
// int max_batch; //指定trt批处理数量上限
// char* serialize_file; //指定trt缓存文件完整路径
// char* auth_license;
// vehicle_pose_param() :mode(DEVICE_GPU), gpuid(0), engine(ENGINE_TENSORRT), max_batch(20), auth_license("sy") {};
}vehicle_pose_param;
#endif
#ifndef __VEHICLE_POSE_DRAW_PARAM__
#define __VEHICLE_POSE_DRAW_PARAM__
#define PIXEL_COUNT 3
typedef struct vehicle_pose_draw_param
{
int ldmk[PIXEL_COUNT]; //绘制ldmk点 像素值
int pose[PIXEL_COUNT]; //绘制点云 像素值
char* result_image_path; //图片保存路径,如"./result/car1.jpg"
char* car_vertice_path; //car_vertice路径
}vehicle_pose_draw_param;
#endif
/*************************************************************************
* FUNCTION: car_pose_recg_init
* PURPOSE: 车辆姿态估计初始化
* PARAM:
[in] handle - 句柄
[in] param - 初始化参数
* RETURN: 成功(0)或错误(<0)
* NOTES:
*************************************************************************/
VEHICLE_POSE_API int vehicle_pose_init(void ** handle, vehicle_pose_param param);
/*************************************************************************
* FUNCTION: car_pose_recg_process
* PURPOSE: 车辆姿态估计
* PARAM:
[in] tools - 句柄
[in] img_data - 检测图像数据
[out] result - 检测结果
* RETURN: 成功(0)或错误(<0)
* NOTES:
*************************************************************************/
VEHICLE_POSE_API int vehicle_pose_process(void * handle, sy_img * img_data, vehicle_pose_result * result);
/*************************************************************************
* FUNCTION: car_pose_recg_batch
* PURPOSE: 车辆姿态估计批处理
* PARAM:
[in] tools - 句柄
[in] img_data_array - 检测图像数据数组
[in] batch_size - 检测图像批处理个数
[out] result - 检测结果数组
* RETURN: 成功(0)或错误(<0)
* NOTES:
*************************************************************************/
VEHICLE_POSE_API int vehicle_pose_batch(void * handle, sy_img *img_data_array, int batch_size, vehicle_pose_result * result);
VEHICLE_POSE_API int vehicle_pose_batch_draw(void * handle, sy_img *img_data_array, int batch_size, vehicle_pose_result * result, vehicle_pose_draw_param *draw_param);
#ifdef _VEHICLE_DET_
VEHICLE_POSE_API int vehicle_det_pose_process_path(void * handle, char* image_path, vehicle_pose_result *result, int *car_count, vehicle_pose_draw_param draw_param);
VEHICLE_POSE_API int vehicle_det_pose_process(void * handle, sy_img img_data, vehicle_pose_result *result,int *car_count, vehicle_pose_draw_param draw_param);
#endif
/*************************************************************************
* FUNCTION: car_pose_recg_release
* PURPOSE: 资源释放
* PARAM:
[in] handle - 处理句柄
* RETURN: NULL
* NOTES:
*************************************************************************/
VEHICLE_POSE_API void vehicle_pose_release(void ** handle);
/*************************************************************************
* FUNCTION: car_pose_recg_get_version
* PURPOSE: 版本返回
* PARAM: NULL
* RETURN: 版本号
* NOTES:
*************************************************************************/
VEHICLE_POSE_API const char * vehicle_pose_get_version();
#ifdef __cplusplus
};
#endif
#endif