IDLFaceLivenessManager.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. //
  2. // IDLFaceLivenessManager.h
  3. // IDLFaceSDK
  4. //
  5. // Created by Tong,Shasha on 2017/5/18.
  6. // Copyright © 2017年 Baidu. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import <UIKit/UIKit.h>
  10. #import <CoreGraphics/CoreGraphics.h>
  11. @class FaceInfo;
  12. @class FaceLivenessState;
  13. #define TIME_THRESHOLD_FOR_ANOTHER_SESSION 2.0
  14. typedef NS_ENUM(NSInteger, LivenessActionType) {
  15. LivenessActionTypeLiveEye = 0,
  16. LivenessActionTypeLiveMouth = 1,
  17. LivenessActionTypeLiveYawRight = 2,
  18. LivenessActionTypeLiveYawLeft = 3,
  19. LivenessActionTypeLivePitchUp = 4,
  20. LivenessActionTypeLivePitchDown = 5,
  21. LivenessActionTypeLiveYaw = 6,
  22. LivenessActionTypeNoAction = 7,
  23. };
  24. typedef NS_ENUM(NSUInteger, LivenessRemindCode) {
  25. LivenessRemindCodeOK = 0, //成功
  26. LivenessRemindCodeBeyondPreviewFrame, //出框
  27. LivenessRemindCodeNoFaceDetected, //没有检测到人脸
  28. LivenessRemindCodeMuchIllumination,
  29. LivenessRemindCodePoorIllumination, //光照不足
  30. LivenessRemindCodeImageBlured, //图像模糊
  31. LivenessRemindCodeTooFar, //太远
  32. LivenessRemindCodeTooClose, //太近
  33. LivenessRemindCodePitchOutofDownRange, //头部偏低
  34. LivenessRemindCodePitchOutofUpRange, //头部偏高
  35. LivenessRemindCodeYawOutofLeftRange, //头部偏左
  36. LivenessRemindCodeYawOutofRightRange, //头部偏右
  37. LivenessRemindCodeOcclusionLeftEye, //左眼有遮挡
  38. LivenessRemindCodeOcclusionRightEye, //右眼有遮挡
  39. LivenessRemindCodeOcclusionNose, //鼻子有遮挡
  40. LivenessRemindCodeOcclusionMouth, //嘴巴有遮挡
  41. LivenessRemindCodeOcclusionLeftContour, //左脸颊有遮挡
  42. LivenessRemindCodeOcclusionRightContour, //右脸颊有遮挡
  43. LivenessRemindCodeOcclusionChinCoutour, //下颚有遮挡
  44. LivenessRemindCodeTimeout, //超时
  45. LivenessRemindCodeLiveEye, //眨眨眼
  46. LivenessRemindCodeLiveMouth, //张大嘴
  47. LivenessRemindCodeLiveYawLeft, //向右摇头
  48. LivenessRemindCodeLiveYawRight, //向左摇头
  49. LivenessRemindCodeLivePitchUp, //向上抬头
  50. LivenessRemindCodeLivePitchDown, //向下低头
  51. LivenessRemindCodeLiveYaw, //摇摇头
  52. LivenessRemindCodeSingleLivenessFinished, //完成一个活体动作
  53. LivenessRemindActionCodeTimeout, // 当前活体动作超时
  54. LivenessRemindCodeLeftEyeClosed,
  55. LivenessRemindCodeRightEyeClosed,
  56. LivenessRemindCodeVerifyInitError, //鉴权失败
  57. // LivenessRemindCodeVerifyDecryptError,
  58. // LivenessRemindCodeVerifyInfoFormatError,
  59. // LivenessRemindCodeVerifyExpired,
  60. // LivenessRemindCodeVerifyMissRequiredInfo,
  61. // LivenessRemindCodeVerifyInfoCheckError,
  62. // LivenessRemindCodeVerifyLocalFileError,
  63. // LivenessRemindCodeVerifyRemoteDataError,
  64. LivenessRemindCodeConditionMeet,
  65. LivenessRemindCodeFaceIdChanged, // faceid 发生变化
  66. LivenessRemindCodeDataHitOne
  67. // LivenessRemindCodeDataHitLast,
  68. };
  69. typedef void (^LivenessStrategyCompletion) (NSDictionary * images, FaceInfo *faceInfo, LivenessRemindCode remindCode);
  70. typedef void (^LivenessNormalCompletion) (NSDictionary * images, FaceInfo *faceInfo, LivenessRemindCode remindCode);
  71. /**
  72. * 活体检测过程中,返回活体总数,当前成功个数,当前活体类型
  73. */
  74. typedef void (^LivenessProcess) (float numberOfLiveness, float numberOfSuccess, LivenessActionType currenActionType);
  75. @interface IDLFaceLivenessManager : NSObject
  76. @property (nonatomic, assign) BOOL enableSound;
  77. + (instancetype)sharedInstance;
  78. /**
  79. * 人脸活体验证,成功之后返回扣图图片,原始图片
  80. * @param image 镜头拿到的图片
  81. * @param detectRect 预览的Rect
  82. * @param previewRect 检测的Rect
  83. * return completion 回调信息
  84. */
  85. -(void) livenessNormalWithImage:(UIImage *)image previewRect:(CGRect)previewRect detectRect:(CGRect)detectRect completionHandler:(LivenessNormalCompletion)completion;
  86. /**
  87. * 活体检测过程中,返回活体总数,当前成功个数,当前活体类型
  88. */
  89. -(void) livenessProcessHandler:(LivenessProcess) process;
  90. - (void)reset;
  91. -(void)startInitial;
  92. /**
  93. * 返回无黑边的方法
  94. * @param array 活体动作数组
  95. * @param order 是否顺序执行
  96. * @param numberOfLiveness 活体动作个数
  97. */
  98. - (void)livenesswithList:(NSArray *)array order:(BOOL)order numberOfLiveness:(NSInteger)numberOfLiveness;
  99. @end