face_detect.h
5.95 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
152
153
154
155
156
157
158
159
/************************************************************
* Version: face_detect_v1.4.1.20201221.x86_64.gpu
* CopyRight: 中科视语(北京)科技有限公司
* UpdateDate: 20201221
* Content:
************************************************************/
#ifndef FACEDETECT_H_
#define FACEDETECT_H_
#ifdef _MSC_VER
#ifdef FACEDETECT_EXPORTS
#define FACEDETECT_API __declspec(dllexport)
#else
#define FACEDETECT_API __declspec(dllimport)
#endif
#else
#define FACEDETECT_API __attribute__ ((visibility ("default")))
#endif
#ifdef __cplusplus
extern "C"
{
#endif
#include "sy_common.h" //通用数据结构体定义
// #define GPUIMG_PROCESS
#ifndef FACIALFEAPOINTSIZE //关键点检测支持25个点
#define FACIALFEAPOINTSIZE 25
#endif
#ifndef __FD_INFO__
#define __FD_INFO__
typedef struct fd_info {
sy_rect face_position; //人脸位置
float face_pos_score; //人脸框置信度
sy_point facial_fea_point[FACIALFEAPOINTSIZE]; //人脸关键点位置信息
int occlusion; //人脸遮挡度,范围值为0-100,越大表示人脸遮挡程度越高
int clarity; //人脸清晰度,范围值为0-100,越大表示图像越清晰,人脸清晰度判别建议阈值为30
int brightness; //人脸亮度,只有3种可能的值:[-1->太暗,0->正常,1->太亮],亮度结果会受亮度阈值参数brightness_min和brightness_max影响
//int hat; //带帽子,范围为0-100,越大表示越可能有佩戴帽子,建议判别阈值为50
//int glass; //带眼镜,范围为0-100,越大表示越可能有戴眼镜,建议判别阈值为70
float roll; //姿态角
float yaw; //姿态角
float pitch; //姿态角
float score; //人脸置信度
} fd_info;
#endif
#ifndef __FD_RESULT__
#define __FD_RESULT__
typedef struct fd_result { //结果结构体
fd_info *info; //内存由外部申请
int count; //人脸个数
} fd_result;
#endif
#ifndef __FD_PARAM__
#define __FD_PARAM__
typedef struct fd_param
{
sy_command facial_fea_point_config; //是否启动关键点检测
sy_command pose_config; //是否启动姿态角
sy_command quality_config; //是否启动质量检测
sy_command score_config; //是否启动人脸置信度
// int log; //日志
// int mode; //运行模式(DEVICE_GPU / DEVICE_CPU)
int devId; //指定显卡id
float thresld; //检测阈值 建议0.7
int max_result_count; //检测结果目标数上限
// int max_batch_size_detect; //检测批处理检测数量上限
// int max_batch_size_ldmk; //关键点批处理检测数量上限
// int max_batch_size_pose; //姿态角批处理检测数量上限
// int max_batch_size_score; //置信度批处理检测数量上限
// int max_batch_size_blurglass; //质量(模糊)批处理检测数量上限
// //int max_batch_size_hat; //质量(帽子)批处理检测数量上限
// int max_batch_size_occlusion; //质量(遮挡)批处理检测数量上限
char * auth_license;
char* det_modelNames; //人脸检测
char* ldmk_modelNames; //人脸关键点
char* pose_modelNames; //人脸姿态
char* score_modelNames; //人脸置信度
char* fuzzy_modelNames; //人脸质量_模糊
char* occlusion_modelNames; //人脸质量_遮挡
fd_param() : facial_fea_point_config(SY_CONFIG_OPEN), pose_config(SY_CONFIG_OPEN), \
quality_config(SY_CONFIG_OPEN), score_config(SY_CONFIG_OPEN), thresld(0.6), devId(0), max_result_count(20), auth_license("") {}; //默认功能全部启动
}fd_param;
#endif
/*************************************************************************
* function: fd_init
* purpose: init resources
* param:
[in] handle - handle
[in] param - init param
* return: success(0) or error code(<0)
* notes: null
*************************************************************************/
FACEDETECT_API int fd_init(void ** handle, fd_param param);
/*************************************************************************
* function: fd_release
* purpose: release sources
* param:
[in] handle - handle
* return: null
* notes: null
*************************************************************************/
FACEDETECT_API void fd_release(void ** handle);
/*************************************************************************
* function: fd_get_version
* purpose: get sdk version
* param: null
* return: null
* notes: null
*************************************************************************/
FACEDETECT_API const char * fd_get_version();
/*************************************************************************
* function: fd_detect_batch
* purpose: detect faces
* param:
[in] handle - handle
[in] img_data_array - data array
[in] format - data format
[in] batch_size - batch size
[in] result - face detect result
* return: success(0) or error code(<0)
* notes: null
*************************************************************************/
//FACEDETECT_API int fd_detect_batch(void * handle, sy_img * img_data_array, sy_format format, int batch_size, fd_result *result);
/*************************************************************************
* function: fd_detect
* purpose: detect faces
* param:
[in] handle - handle
[in] img_data_array - data array
[in] format - data format
[in] result - face detect result
* return: success(0) or error code(<0)
* notes: null
*************************************************************************/
FACEDETECT_API int fd_detect(void * handle, sy_img img_data, sy_format format, fd_result *result);
FACEDETECT_API int fd_detect_batch(void * handle, sy_img * img_data_array, sy_format format, int batch_size, fd_result *result);
#ifdef __cplusplus
};
#endif
#endif