FaceSDKManager.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. //
  2. // FaceSDKManager.h
  3. // IDLFaceSDK
  4. //
  5. // Created by Tong,Shasha on 2017/5/15.
  6. // Copyright © 2017年 Baidu. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import <UIKit/UIKit.h>
  10. #import "FaceSDK.h"
  11. typedef NS_ENUM(NSInteger, FaceLivenessActionType) {
  12. FaceLivenessActionTypeLiveEye = 0,
  13. FaceLivenessActionTypeLiveMouth = 1,
  14. FaceLivenessActionTypeLiveYawRight = 2,
  15. FaceLivenessActionTypeLiveYawLeft = 3,
  16. FaceLivenessActionTypeLivePitchUp = 4,
  17. FaceLivenessActionTypeLivePitchDown = 5,
  18. FaceLivenessActionTypeLiveYaw = 6,
  19. FaceLivenessActionTypeNoAction = 7,
  20. };
  21. typedef NS_ENUM(NSUInteger, ResultCode) {
  22. ResultCodeOK,
  23. ResultCodePitchOutofDownRange, //头部偏低
  24. ResultCodePitchOutofUpRange, //头部偏高
  25. ResultCodeYawOutofLeftRange, //头部偏左
  26. ResultCodeYawOutofRightRange, //头部偏右
  27. ResultCodePoorIllumination, //光照不足
  28. ResultCodeNoFaceDetected, //没有检测到人脸
  29. ResultCodeDataNotReady,
  30. ResultCodeDataHitOne, //采集到一张照片
  31. ResultCodeDataHitLast, //采集到最后一张照片
  32. ResultCodeImageBlured, //图像模糊
  33. ResultCodeOcclusionLeftEye, //左眼有遮挡
  34. ResultCodeOcclusionRightEye, //右眼有遮挡
  35. ResultCodeOcclusionNose, //鼻子有遮挡
  36. ResultCodeOcclusionMouth, //嘴巴有遮挡
  37. ResultCodeOcclusionLeftContour, //左脸颊有遮挡
  38. ResultCodeOcclusionRightContour, //右脸颊有遮挡
  39. ResultCodeOcclusionChinCoutour, //下颚有遮挡
  40. ResultCodeVerifyInitError, //鉴权失败
  41. ResultCodeVerifyDecryptError,
  42. ResultCodeVerifyInfoFormatError,
  43. ResultCodeVerifyExpired,
  44. ResultCodeVerifyMissRequiredInfo,
  45. ResultCodeVerifyInfoCheckError,
  46. ResultCodeVerifyLocalFileError,
  47. ResultCodeVerifyRemoteDataError,
  48. ResultCodeUnknowType //未知类型
  49. };
  50. typedef NS_ENUM(NSUInteger, TrackResultCode) {
  51. TrackResultCodeOK,
  52. TrackResultCodeImageBlured, // 图像模糊
  53. TrackResultCodePoorIllumination, // 光照不行
  54. TrackResultCodeNoFaceDetected, //没有检测到人脸
  55. TrackResultCodeOcclusionLeftEye, //左眼有遮挡
  56. TrackResultCodeOcclusionRightEye, //右眼有遮挡
  57. TrackResultCodeOcclusionNose, //鼻子有遮挡
  58. TrackResultCodeOcclusionMouth, //嘴巴有遮挡
  59. TrackResultCodeOcclusionLeftContour, //左脸颊有遮挡
  60. TrackResultCodeOcclusionRightContour, //右脸颊有遮挡
  61. TrackResultCodeOcclusionChinCoutour, //下颚有遮挡
  62. TrackResultCodeVerifyInitError, //鉴权失败
  63. TrackResultCodeVerifyDecryptError,
  64. TrackResultCodeVerifyInfoFormatError,
  65. TrackResultCodeVerifyExpired,
  66. TrackResultCodeVerifyMissRequiredInfo,
  67. TrackResultCodeVerifyInfoCheckError,
  68. TrackResultCodeVerifyLocalFileError,
  69. TrackResultCodeVerifyRemoteDataError,
  70. TrackResultCodeUnknowType //未知类型
  71. };
  72. @class FaceInfo;
  73. typedef void (^BDFaceDetectCompletion)(FaceInfo * faceinfo, ResultCode resultCode);
  74. typedef void (^BDFaceLivenessCompletion)(FaceInfo * faceinfo, LivenessState* state, ResultCode resultCode);
  75. typedef void (^BDFacetrackDetectCompletion)(FaceInfo * faceinfo, TrackResultCode resultCode);
  76. @interface FaceSDKManager : NSObject
  77. @property (nonatomic, assign) CGFloat conditionTimeout;
  78. + (instancetype)sharedInstance;
  79. //鉴权方法
  80. - (void)setLicenseID:(NSString *)licenseID andLocalLicenceFile:(NSString *)localLicencePath;
  81. - (BOOL)canWork;
  82. //set方法
  83. - (void)setMinFaceSize:(NSInteger)width;
  84. - (void)setCropFaceSizeWidth:(CGFloat)width;
  85. - (void)setNotFaceThreshold:(CGFloat)th;
  86. - (void)setOccluThreshold:(CGFloat)thr;
  87. - (void)setIllumThreshold:(NSInteger)thr;
  88. - (void)setBlurThreshold:(CGFloat)thr;
  89. - (void)setEulurAngleThrPitch:(NSInteger)pitch yaw:(NSInteger)yaw roll:(NSInteger)roll;
  90. - (void)setIsCheckQuality:(BOOL)isCheck;
  91. - (void)setMaxCropImageNum:(NSInteger)imageNum;
  92. - (void)clearTrackedFaces;
  93. - (void)setConditionTimeout:(CGFloat)timeout;
  94. - (void)trackDetectWithImage:(UIImage *)image withMaxFaceCount:(NSInteger)maxFaceCount completion: (BDFacetrackDetectCompletion)completion;
  95. - (void)detectWithImage:(UIImage *)image completion: (BDFaceDetectCompletion)completion;
  96. - (void)livenessWithImage:(UIImage *)image completion:(BDFaceLivenessCompletion)completion;
  97. + (NSString *)getVersion;
  98. @end
  99. @interface FaceInfo : NSObject
  100. @property (nonatomic, assign) CGRect faceRect;
  101. @property (nonatomic, assign) NSInteger faceId;
  102. @property (nonatomic, strong) NSArray * landMarks;
  103. @property (nonatomic, assign) CGFloat score;
  104. @property (nonatomic, strong) NSArray * headPose;
  105. @property (nonatomic, strong) NSArray * cropImages;
  106. /**
  107. * 裁剪没有黑边的图片
  108. */
  109. @property (nonatomic, strong) NSArray *cropFaces;
  110. @end