arcsoft_face_sdk.h 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557
  1. /*******************************************************************************
  2. * Copyright(c) ArcSoft, All right reserved.
  3. *
  4. * This file is ArcSoft's property. It contains ArcSoft's trade secret, proprietary
  5. * and confidential information.
  6. *
  7. * DO NOT DISTRIBUTE, DO NOT DUPLICATE OR TRANSMIT IN ANY FORM WITHOUT PROPER
  8. * AUTHORIZATION.
  9. *
  10. * If you are not an intended recipient of this file, you must not copy,
  11. * distribute, modify, or take any action in reliance on it.
  12. *
  13. * If you have received this file in error, please immediately notify ArcSoft and
  14. * permanently delete the original and any copy of any file and any printout
  15. * thereof.
  16. *********************************************************************************/
  17. #ifndef _ARCSOFT_SDK_ASF_H_
  18. #define _ARCSOFT_SDK_ASF_H_
  19. #include "amcomdef.h"
  20. #include "asvloffscreen.h"
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24. #define ASF_NONE 0x00000000 //无属性
  25. #define ASF_FACE_DETECT 0x00000001 //此处detect可以是tracking或者detection两个引擎之一,具体的选择由detect mode 确定
  26. #define ASF_FACERECOGNITION 0x00000004 //人脸特征
  27. #define ASF_AGE 0x00000008 //年龄
  28. #define ASF_GENDER 0x00000010 //性别
  29. #define ASF_LIVENESS 0x00000080 //RGB活体
  30. #define ASF_IMAGEQUALITY 0x00000200 //图像质量检测
  31. #define ASF_IR_LIVENESS 0x00000400 //IR活体
  32. #define ASF_MASKDETECT 0x00001000 //口罩检测
  33. #define ASF_UPDATE_FACEDATA 0x00002000 //更新人脸数据
  34. #define ASF_MAX_DETECTFACENUM 50 //该版本最大支持同时检测50张人脸
  35. //检测模式
  36. enum ASF_DetectMode{
  37. ASF_DETECT_MODE_VIDEO = 0x00000000, //Video模式,一般用于多帧连续检测
  38. ASF_DETECT_MODE_IMAGE = 0xFFFFFFFF //Image模式,一般用于静态图的单次检测
  39. };
  40. //检测时候人脸角度的优先级,在文档中初始化接口中有图示说明,请参考
  41. enum ASF_OrientPriority {
  42. ASF_OP_0_ONLY = 0x1, // 常规预览下正方向
  43. ASF_OP_90_ONLY = 0x2, // 基于0°逆时针旋转90°的方向
  44. ASF_OP_270_ONLY = 0x3, // 基于0°逆时针旋转270°的方向
  45. ASF_OP_180_ONLY = 0x4, // 基于0°旋转180°的方向(逆时针、顺时针效果一样)
  46. ASF_OP_ALL_OUT = 0x5 // 全角度
  47. };
  48. //orientation 角度,逆时针方向
  49. enum ASF_OrientCode {
  50. ASF_OC_0 = 0x1, // 0 degree
  51. ASF_OC_90 = 0x2, // 90 degree
  52. ASF_OC_270 = 0x3, // 270 degree
  53. ASF_OC_180 = 0x4, // 180 degree
  54. ASF_OC_30 = 0x5, // 30 degree
  55. ASF_OC_60 = 0x6, // 60 degree
  56. ASF_OC_120 = 0x7, // 120 degree
  57. ASF_OC_150 = 0x8, // 150 degree
  58. ASF_OC_210 = 0x9, // 210 degree
  59. ASF_OC_240 = 0xa, // 240 degree
  60. ASF_OC_300 = 0xb, // 300 degree
  61. ASF_OC_330 = 0xc // 330 degree
  62. };
  63. //检测模型
  64. enum ASF_DetectModel {
  65. ASF_DETECT_MODEL_RGB = 0x1 //RGB图像检测模型
  66. //预留扩展其他检测模型
  67. };
  68. //人脸比对可选的模型
  69. enum ASF_CompareModel{
  70. ASF_LIFE_PHOTO = 0x1, //用于生活照之间的特征比对,推荐阈值0.80
  71. ASF_ID_PHOTO = 0x2 //用于证件照或生活照与证件照之间的特征比对,推荐阈值0.82
  72. };
  73. enum ASF_RegisterOrNot{
  74. ASF_RECOGNITION = 0x0, //用于识别照人脸特征提取
  75. ASF_REGISTER = 0x1 //用于注册照人脸特征提取
  76. };
  77. //版本信息
  78. typedef struct {
  79. MPChar Version; // 版本号
  80. MPChar BuildDate; // 构建日期
  81. MPChar CopyRight; // Copyright
  82. }ASF_VERSION, *LPASF_VERSION;
  83. //图像数据
  84. typedef LPASVLOFFSCREEN LPASF_ImageData;
  85. //人脸属性信息
  86. typedef struct{
  87. MInt32* wearGlasses; // 戴眼镜状态, 0 未戴眼镜;1 戴眼镜;2 墨镜
  88. MInt32* leftEyeOpen; // 左眼状态 0 闭眼;1 睁眼
  89. MInt32* rightEyeOpen; // 右眼状态 0 闭眼;1 睁眼
  90. MInt32* mouthClose; // 张嘴状态 0 张嘴;1 合嘴
  91. } ASF_FaceAttributeInfo, *LPASF_FaceAttributeInfo;
  92. //3D角度信息
  93. typedef struct
  94. {
  95. MFloat* roll;
  96. MFloat* yaw;
  97. MFloat* pitch;
  98. }ASF_Face3DAngleInfo, *LPASF_Face3DAngleInfo;
  99. //人脸信息
  100. typedef struct{
  101. MPVoid data; // 人脸信息
  102. MInt32 dataSize; // 人脸信息长度
  103. } ASF_FaceDataInfo, *LPASF_FaceDataInfo;
  104. //单人脸信息
  105. typedef struct {
  106. MRECT faceRect; // 人脸框信息
  107. MInt32 faceOrient; // 输入图像的角度,可以参考 ArcFaceCompare_OrientCode
  108. ASF_FaceDataInfo faceDataInfo; // 单张人脸信息
  109. } ASF_SingleFaceInfo, *LPASF_SingleFaceInfo;
  110. //多人脸框信息
  111. typedef struct{
  112. MInt32 faceNum; // 检测到的人脸个数
  113. MRECT* faceRect; // 人脸框信息
  114. MInt32* faceOrient; // 输入图像的角度,可以参考 ArcFace_OrientCode .
  115. MInt32* faceID; // face ID
  116. LPASF_FaceDataInfo faceDataInfoList; // 人脸检测信息
  117. MInt32* faceIsWithinBoundary; // 人脸是否在边界内 0 人脸溢出;1 人脸在图像边界内
  118. MRECT* foreheadRect; // 人脸额头区域
  119. ASF_FaceAttributeInfo faceAttributeInfo; // 人脸属性信息
  120. ASF_Face3DAngleInfo face3DAngleInfo; // 人脸3D角度
  121. }ASF_MultiFaceInfo, *LPASF_MultiFaceInfo;
  122. // 激活文件信息
  123. typedef struct {
  124. MPChar startTime; //开始时间
  125. MPChar endTime; //截止时间
  126. MPChar activeKey; //激活码
  127. MPChar platform; //平台
  128. MPChar sdkType; //sdk类型
  129. MPChar appId; //APPID
  130. MPChar sdkKey; //SDKKEY
  131. MPChar sdkVersion; //SDK版本号
  132. MPChar fileVersion; //激活文件版本号
  133. }ASF_ActiveFileInfo, *LPASF_ActiveFileInfo;
  134. /*******************************************************************************************
  135. * 获取激活文件信息接口
  136. *******************************************************************************************/
  137. MRESULT ASFGetActiveFileInfo(
  138. LPASF_ActiveFileInfo activeFileInfo // [out] 激活文件信息
  139. );
  140. /*******************************************************************************************
  141. * 在线激活接口
  142. *******************************************************************************************/
  143. MRESULT ASFOnlineActivation(
  144. MPChar AppId, // [in] APPID 官网下载
  145. MPChar SDKKey, // [in] SDKKEY 官网下载
  146. MPChar ActiveKey // [in] ActiveKey 官网下载
  147. );
  148. /*******************************************************************************************
  149. * 获取设备信息接口
  150. *******************************************************************************************/
  151. MRESULT ASFGetActiveDeviceInfo(
  152. MPChar* deviceInfo // [out] 采集的设备信息,用于到开发者中心做离线激活,生成离线授权文件
  153. );
  154. /*******************************************************************************************
  155. * 离线激活接口
  156. *******************************************************************************************/
  157. MRESULT ASFOfflineActivation(
  158. MPChar filePath // [in] 许可文件路径(离线授权文件),需要读写权限
  159. );
  160. /************************************************************************
  161. * 初始化引擎
  162. ************************************************************************/
  163. MRESULT ASFInitEngine(
  164. ASF_DetectMode detectMode, // [in] ASF_DETECT_MODE_VIDEO 视频模式:适用于摄像头预览,视频文件识别
  165. // AF_DETECT_MODE_IMAGE 图片模式:适用于静态图片的识别
  166. ASF_OrientPriority detectFaceOrientPriority, // [in] 检测脸部的角度优先值,参考 ASF_OrientPriority
  167. MInt32 detectFaceMaxNum, // [in] 最大需要检测的人脸个数
  168. MInt32 combinedMask, // [in] 用户选择需要检测的功能组合,可单个或多个
  169. MHandle* hEngine // [out] 初始化返回的引擎handle
  170. );
  171. //******************************** 人脸 属性阈值 ***********************************
  172. typedef struct {
  173. MFloat eyeOpenThreshold; // [in] 睁眼幅度阈值,阈值越大睁眼幅度越大
  174. MFloat mouthCloseThreshold; // [in] 张嘴幅度阈值,阈值越大,张嘴幅度越小
  175. MFloat wearGlassesThreshold; // [in] 佩戴眼镜阈值
  176. }ASF_FaceAttributeThreshold, *LPASF_FaceAttributeThreshold;
  177. /************************************************************************
  178. * 取值范围[0-1], 默认阈值均为:0.5, 用户可以根据实际需求,设置遮挡范围
  179. ************************************************************************/
  180. MRESULT ASFSetFaceAttributeParam(
  181. MHandle hEngine, // [in] 引擎handle
  182. LPASF_FaceAttributeThreshold attributeThreshold // [in] 人脸属性阈值
  183. );
  184. /******************************************************
  185. * VIDEO模式:人脸追踪 IMAGE模式:人脸检测
  186. ******************************************************/
  187. MRESULT ASFDetectFaces(
  188. MHandle hEngine, // [in] 引擎handle
  189. MInt32 width, // [in] 图片宽度
  190. MInt32 height, // [in] 图片高度
  191. MInt32 format, // [in] 颜色空间格式
  192. MUInt8* imgData, // [in] 图片数据
  193. LPASF_MultiFaceInfo detectedFaces, // [out]检测到的人脸信息
  194. ASF_DetectModel detectModel = ASF_DETECT_MODEL_RGB // [in] 预留字段,当前版本使用默认参数即可
  195. );
  196. /******************************************************
  197. * VIDEO模式:人脸追踪 IMAGE模式:人脸检测
  198. * 图像数据以结构体形式传入,对采用更高字节对齐方式的图像兼容性更好
  199. ******************************************************/
  200. MRESULT ASFDetectFacesEx(
  201. MHandle hEngine, // [in] 引擎handle
  202. LPASF_ImageData imgData, // [in] 图片数据
  203. LPASF_MultiFaceInfo detectedFaces, // [out] 检测到的人脸信息
  204. ASF_DetectModel detectModel = ASF_DETECT_MODEL_RGB // [in] 预留字段,当前版本使用默认参数即可
  205. );
  206. /******************************************************
  207. * 传入修改后的人脸框,更新人脸信息,用于做双目对齐或其他策略
  208. * 注意:LPASF_MultiFaceInfo在该接口中既是入参也是出参
  209. ******************************************************/
  210. MRESULT ASFUpdateFaceData(
  211. MHandle hEngine, // [in] 引擎handle
  212. MInt32 width, // [in] 图片宽度
  213. MInt32 height, // [in] 图片高度
  214. MInt32 format, // [in] 颜色空间格式
  215. MUInt8 * imgData, // [in] 图片数据
  216. LPASF_MultiFaceInfo detectedFaces // [in/out]检测到的人脸信息
  217. );
  218. /******************************************************
  219. * 传入修改后的人脸框,更新人脸信息,用于做双目对齐或其他策略
  220. * 注意:LPASF_MultiFaceInfo在该接口中既是入参也是出参
  221. * 图像数据以结构体形式传入,对采用更高字节对齐方式的图像兼容性更好
  222. ******************************************************/
  223. MRESULT ASFUpdateFaceDataEx(
  224. MHandle hEngine, // [in] 引擎handle
  225. LPASF_ImageData imgData, // [in] 图像数据
  226. LPASF_MultiFaceInfo detectedFaces // [in/out] 检测到的人脸信息
  227. );
  228. /******************************************************
  229. * 图像质量检测,(RGB模式: 识别阈值:0.49 注册阈值:0.63 口罩模式:识别阈值:0.29)
  230. ******************************************************/
  231. MRESULT ASFImageQualityDetect(
  232. MHandle hEngine, // [in] 引擎handle
  233. MInt32 width, // [in] 图片宽度
  234. MInt32 height, // [in] 图片高度
  235. MInt32 format, // [in] 颜色空间格式
  236. MUInt8 * imgData, // [in] 图片数据
  237. LPASF_SingleFaceInfo faceInfo, // [in] 人脸位置信息
  238. MInt32 isMask, // [in] 仅支持传入1、0、-1,戴口罩 1,否则认为未戴口罩
  239. MFloat* confidenceLevel, // [out] 图像质量检测结果
  240. ASF_DetectModel detectModel = ASF_DETECT_MODEL_RGB // [in] 预留字段,当前版本使用默认参数即可
  241. );
  242. /******************************************************
  243. * 图像质量检测,(RGB模式: 识别阈值:0.49 注册阈值:0.63 口罩模式:识别阈值:0.29)
  244. * 图像数据以结构体形式传入,对采用更高字节对齐方式的图像兼容性更好
  245. ******************************************************/
  246. MRESULT ASFImageQualityDetectEx(
  247. MHandle hEngine, // [in] 引擎handle
  248. LPASF_ImageData imgData, // [in] 图片数据
  249. LPASF_SingleFaceInfo faceInfo, // [in] 人脸位置信息
  250. MInt32 isMask, // [in] 仅支持传入1、0、-1,戴口罩 1,否则认为未戴口罩
  251. MFloat* confidenceLevel, // [out] 图像质量检测结果
  252. ASF_DetectModel detectModel = ASF_DETECT_MODEL_RGB // [in] 预留字段,当前版本使用默认参数即可
  253. );
  254. /************************************************************************
  255. * 年龄/性别/人脸3D角度/口罩/遮挡/额头区域(该接口仅支持RGB图像),最多支持4张人脸信息检测,超过部分返回未知
  256. * RGB活体仅支持单人脸检测,该接口不支持检测IR活体
  257. ************************************************************************/
  258. MRESULT ASFProcess(
  259. MHandle hEngine, // [in] 引擎handle
  260. MInt32 width, // [in] 图片宽度
  261. MInt32 height, // [in] 图片高度
  262. MInt32 format, // [in] 颜色空间格式
  263. MUInt8* imgData, // [in] 图片数据
  264. LPASF_MultiFaceInfo detectedFaces, // [in] 人脸信息,用户根据待检测的功能选择需要使用的人脸。
  265. MInt32 combinedMask // [in] 只支持初始化时候指定需要检测的功能,在process时进一步在这个已经指定的功能集中继续筛选
  266. // 例如初始化的时候指定检测年龄和性别,在process的时候可以只检测年龄,但是不能检测除年龄和性别之外的功能
  267. );
  268. /************************************************************************
  269. * 年龄/性别/人脸3D角度/口罩/遮挡/额头区域(该接口仅支持RGB图像),最多支持4张人脸信息检测,超过部分返回未知
  270. * RGB活体仅支持单人脸检测,该接口不支持检测IR活体
  271. * 图像数据以结构体形式传入,对采用更高字节对齐方式的图像兼容性更好
  272. ************************************************************************/
  273. MRESULT ASFProcessEx(
  274. MHandle hEngine, // [in] 引擎handle
  275. LPASF_ImageData imgData, // [in] 图片数据
  276. LPASF_MultiFaceInfo detectedFaces, // [in] 人脸信息,用户根据待检测的功能选择需要使用的人脸。
  277. MInt32 combinedMask // [in] 只支持初始化时候指定需要检测的功能,在process时进一步在这个已经指定的功能集中继续筛选
  278. // 例如初始化的时候指定检测年龄和性别,在process的时候可以只检测年龄,但是不能检测除年龄和性别之外的功能
  279. );
  280. /************************************************************************
  281. * 该接口目前仅支持单人脸IR活体检测,默认取第一张人脸
  282. ************************************************************************/
  283. MRESULT ASFProcess_IR(
  284. MHandle hEngine, // [in] 引擎handle
  285. MInt32 width, // [in] 图片宽度
  286. MInt32 height, // [in] 图片高度
  287. MInt32 format, // [in] 颜色空间格式
  288. MUInt8* imgData, // [in] 图片数据
  289. LPASF_MultiFaceInfo detectedFaces, // [in] 人脸信息,用户根据待检测的功能选择需要使用的人脸。
  290. MInt32 combinedMask // [in] 目前只支持传入ASF_IR_LIVENESS属性的传入,且初始化接口需要传入
  291. );
  292. /************************************************************************
  293. * 该接口目前仅支持单人脸IR活体检测,默认取第一张人脸
  294. * 图像数据以结构体形式传入,对采用更高字节对齐方式的图像兼容性更好
  295. ************************************************************************/
  296. MRESULT ASFProcessEx_IR(
  297. MHandle hEngine, // [in] 引擎handle
  298. LPASF_ImageData imgData, // [in] 图片数据
  299. LPASF_MultiFaceInfo detectedFaces, // [in] 人脸信息,用户根据待检测的功能选择需要使用的人脸。
  300. MInt32 combinedMask // [in] 目前只支持传入ASF_IR_LIVENESS属性的传入,且初始化接口需要传入
  301. );
  302. //******************************** 人脸识别相关 *********************************************
  303. typedef struct {
  304. MByte* feature; // 人脸特征信息
  305. MInt32 featureSize; // 人脸特征信息长度
  306. }ASF_FaceFeature, *LPASF_FaceFeature;
  307. typedef struct{
  308. MInt32 searchId; // 唯一标识符
  309. LPASF_FaceFeature feature; // 人脸特征值
  310. MPCChar tag; // 备注
  311. }ASF_FaceFeatureInfo, *LPASF_FaceFeatureInfo;
  312. /************************************************************************
  313. * 单人脸特征提取
  314. ************************************************************************/
  315. MRESULT ASFFaceFeatureExtract(
  316. MHandle hEngine, // [in] 引擎handle
  317. MInt32 width, // [in] 图片宽度
  318. MInt32 height, // [in] 图片高度
  319. MInt32 format, // [in] 颜色空间格式
  320. MUInt8* imgData, // [in] 图片数据
  321. LPASF_SingleFaceInfo faceInfo, // [in] 单张人脸位置和角度信息
  322. ASF_RegisterOrNot registerOrNot, // [in] 注册 1 识别为 0
  323. MInt32 mask, // [in] 带口罩 1,否则0
  324. LPASF_FaceFeature feature // [out] 人脸特征
  325. );
  326. /************************************************************************
  327. * 单人脸特征提取
  328. * 图像数据以结构体形式传入,对采用更高字节对齐方式的图像兼容性更好
  329. ************************************************************************/
  330. MRESULT ASFFaceFeatureExtractEx(
  331. MHandle hEngine, // [in] 引擎handle
  332. LPASF_ImageData imgData, // [in] 图像数据
  333. LPASF_SingleFaceInfo faceInfo, // [in] 单张人脸位置和角度信息
  334. ASF_RegisterOrNot registerOrNot, // [in] 注册 1 识别为 0
  335. MInt32 mask, // [in] 带口罩 1,否则0
  336. LPASF_FaceFeature feature // [out] 人脸特征
  337. );
  338. /************************************************************************
  339. * 人脸特征比对,推荐阈值 ASF_LIFE_PHOTO:0.80 ASF_ID_PHOTO:0.82
  340. ************************************************************************/
  341. MRESULT ASFFaceFeatureCompare(
  342. MHandle hEngine, // [in] 引擎handle
  343. LPASF_FaceFeature feature1, // [in] 待比较人脸特征1
  344. LPASF_FaceFeature feature2, // [in] 待比较人脸特征2
  345. MFloat* confidenceLevel, // [out] 比较结果,置信度数值
  346. ASF_CompareModel compareModel = ASF_LIFE_PHOTO // [in] ASF_LIFE_PHOTO:用于生活照之间的特征比对
  347. // ASF_ID_PHOTO:用于证件照或证件照和生活照之间的特征比对
  348. );
  349. /************************************************************************
  350. * 搜索人脸特征,推荐阈值 ASF_LIFE_PHOTO:0.80 ASF_ID_PHOTO:0.82
  351. ************************************************************************/
  352. MRESULT ASFFaceFeatureCompare_Search(
  353. MHandle hEngine, // [in]  引擎handle
  354. LPASF_FaceFeature feature, // [in]  待比较人脸特征
  355. MFloat* confidenceLevel, // [out] 比较结果,最大置信度数值
  356. LPASF_FaceFeatureInfo featureInfo, // [out] 最大置信度人脸信息
  357. ASF_CompareModel compareModel = ASF_LIFE_PHOTO // [in] 搜索模式
  358. );
  359. /************************************************************************
  360. * 注册人脸特征
  361. ************************************************************************/
  362. MRESULT ASFRegisterFaceFeature(
  363. MHandle hEngine, // [in]  引擎handle
  364. LPASF_FaceFeatureInfo featureInfoList, // [in] 注册列表
  365. MInt32 size // [in] 列表数量
  366. );
  367. /************************************************************************
  368. * 删除人脸特征
  369. ************************************************************************/
  370. MRESULT ASFRemoveFaceFeature(
  371. MHandle hEngine, // [in]  引擎handle
  372. MInt32 searchId // [in]  待删除人脸ID
  373. );
  374. /************************************************************************
  375. * 更新人脸特征
  376. ************************************************************************/
  377. MRESULT ASFUpdateFaceFeature(
  378. MHandle hEngine, // [in]  引擎handle
  379. LPASF_FaceFeatureInfo featureInfo // [in]  待更新人脸特征
  380. );
  381. /************************************************************************
  382. * 获取人脸特征
  383. ************************************************************************/
  384. MRESULT ASFGetFaceFeature(
  385. MHandle hEngine, // [in]  引擎handle
  386. MInt32 searchId, // [in]  查询人脸ID
  387. LPASF_FaceFeatureInfo featureInfo // [out] 注册时信息
  388. );
  389. /************************************************************************
  390. * 获取人脸数量
  391. ************************************************************************/
  392. MRESULT ASFGetFaceCount(
  393. MHandle hEngine, // [in]  引擎handle
  394. MInt32* num // [out] 人脸数量
  395. );
  396. //******************************** 年龄相关 **********************************************
  397. typedef struct {
  398. MInt32* ageArray; // "0" 代表不确定,大于0的数值代表检测出来的年龄结果
  399. MInt32 num; // 检测的人脸个数
  400. }ASF_AgeInfo, *LPASF_AgeInfo;
  401. /************************************************************************
  402. * 获取年龄信息
  403. ************************************************************************/
  404. MRESULT ASFGetAge(
  405. MHandle hEngine, // [in] 引擎handle
  406. LPASF_AgeInfo ageInfo // [out] 检测到的年龄信息
  407. );
  408. //******************************** 性别相关 **********************************************
  409. typedef struct {
  410. MInt32* genderArray; // "0" 表示 男性, "1" 表示 女性, "-1" 表示不确定
  411. MInt32 num; // 检测的人脸个数
  412. }ASF_GenderInfo, *LPASF_GenderInfo;
  413. /************************************************************************
  414. * 获取性别信息
  415. ************************************************************************/
  416. MRESULT ASFGetGender(
  417. MHandle hEngine, // [in] 引擎handle
  418. LPASF_GenderInfo genderInfo // [out] 检测到的性别信息
  419. );
  420. //******************************** 活体信息 ***********************************
  421. typedef struct {
  422. MFloat thresholdmodel_BGR;
  423. MFloat thresholdmodel_IR;
  424. MFloat thresholdmodel_FQ;
  425. }ASF_LivenessThreshold, *LPASF_LivenessThreshold;
  426. /************************************************************************
  427. * 获取相关活体阈值
  428. ************************************************************************/
  429. MRESULT ASFGetLivenessParam(
  430. MHandle hEngine, // [in] 引擎handle
  431. LPASF_LivenessThreshold threshold // [out] 活体置信度
  432. );
  433. /************************************************************************
  434. * 取值范围[0-1],默认值 BGR:0.5 IR:0.5, FQ:0.65, 用户可以根据实际需求,设置不同的阈值
  435. ************************************************************************/
  436. MRESULT ASFSetLivenessParam(
  437. MHandle hEngine, // [in] 引擎handle
  438. LPASF_LivenessThreshold threshold // [in] 活体置信度
  439. );
  440. typedef struct {
  441. MInt32* isLive; // [out] 判断是否真人, 0:非真人;
  442. // 1:真人;
  443. // -1:不确定;
  444. // -2:传入人脸数>1;
  445. // -3: 人脸过小
  446. // -4: 角度过大
  447. // -5: 人脸超出边界
  448. // -6: 深度图错误
  449. // -7: 红外图太亮了
  450. // -8: 红外图太暗了
  451. // -100: 人脸质量错误
  452. MInt32 num;
  453. }ASF_LivenessInfo, *LPASF_LivenessInfo;
  454. /************************************************************************
  455. * 获取RGB活体结果
  456. ************************************************************************/
  457. MRESULT ASFGetLivenessScore(
  458. MHandle hEngine, // [in] 引擎handle
  459. LPASF_LivenessInfo livenessInfo // [out] 检测RGB活体结果
  460. );
  461. /************************************************************************
  462. * 获取IR活体结果
  463. ************************************************************************/
  464. MRESULT ASFGetLivenessScore_IR(
  465. MHandle hEngine, // [in] 引擎handle
  466. LPASF_LivenessInfo irLivenessInfo // [out] 检测到IR活体结果
  467. );
  468. //******************************** 口罩检测相关 **********************************************
  469. typedef struct
  470. {
  471. MInt32* maskArray; // "0" 代表没有带口罩,"1"代表带口罩 ,"-1"表不确定
  472. MInt32 num; // 检测的人脸个数
  473. }ASF_MaskInfo, *LPASF_MaskInfo;
  474. /************************************************************************
  475. * 获取口罩检测的结果
  476. ************************************************************************/
  477. MRESULT ASFGetMask(
  478. MHandle hEngine, // [in] 引擎handle
  479. LPASF_MaskInfo maskInfo // [out] 检测到的口罩检测相关
  480. );
  481. /************************************************************************
  482. * 销毁引擎
  483. ************************************************************************/
  484. MRESULT ASFUninitEngine(
  485. MHandle hEngine
  486. );
  487. /************************************************************************
  488. * 获取版本信息
  489. ************************************************************************/
  490. const ASF_VERSION ASFGetVersion();
  491. #ifdef __cplusplus
  492. }
  493. #endif
  494. #endif