IDLFaceLivenessManager.h 4.2 KB

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