MGFacepp.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. //
  2. // MGFacepp.h
  3. // LandMask
  4. //
  5. // Created by 张英堂 on 16/9/5.
  6. // Copyright © 2016年 megvii. All rights reserved.
  7. //
  8. #import <UIKit/UIKit.h>
  9. #import <CoreMedia/CoreMedia.h>
  10. #import "MGFaceppConfig.h"
  11. #import "MGImageData.h"
  12. #import "MGFaceppCommon.h"
  13. #import "MGAlgorithmInfo.h"
  14. #import "MGFaceInfo.h"
  15. #import "MGDetectRectInfo.h"
  16. @interface MGFacepp : NSObject
  17. - (MGFaceppConfig *)getFaceppConfig;
  18. - (instancetype)init DEPRECATED_ATTRIBUTE;
  19. /**
  20. * 初始化方法 必须使用该方法初始化,否则会导致初始化失败。
  21. *
  22. * @param modelData model data
  23. * @param config 设置的callback
  24. * @return 实例化
  25. */
  26. - (instancetype)initWithModel:(NSData *)modelData
  27. faceppSetting:(void(^)(MGFaceppConfig *config))config;
  28. /**
  29. 初始化方法
  30. @param modelData model data
  31. @param maxFaceCount 一张图像中识别的最大人脸数,设置为1即为单脸跟踪
  32. @param config 设置的callback
  33. @return handle
  34. */
  35. - (instancetype)initWithModel:(NSData *)modelData maxFaceCount:(NSInteger)maxFaceCount faceppSetting:(void(^)(MGFaceppConfig *config))config;
  36. /**
  37. * @param config 更新设置参数
  38. */
  39. - (BOOL)updateFaceppSetting:(void(^)(MGFaceppConfig *config))config;
  40. /**
  41. * 获取检测器目前状态
  42. */
  43. @property (nonatomic, assign, readonly) MGFaceppStatus status;
  44. #pragma mark - 检测人脸信息
  45. /**
  46. * 检测人脸信息
  47. *
  48. * @param imagedata 检测的图片
  49. * @return 检测结果(如果为 nil 时候,检测器异常,检测失败,请检测代码以及设置)
  50. */
  51. - (NSArray <MGFaceInfo *>*)detectWithImageData:(MGImageData *)imagedata;
  52. /**
  53. * 检测人脸框
  54. *
  55. * @param imagedata 检测的图片
  56. * @return 检测结果(如果为 nil 时候,检测器异常,检测失败,请检测代码以及设置)
  57. */
  58. - (NSInteger)getFaceNumberWithImageData:(MGImageData *)imagedata;
  59. /**
  60. * 人脸关键点平滑
  61. *
  62. * @param faceInfo faceinfo model
  63. * @param isSmooth 是否关键点平滑,防止人脸抖动
  64. * @param nr 关键点个数
  65. */
  66. - (BOOL)GetGetLandmark:(MGFaceInfo *)faceInfo isSmooth:(BOOL)isSmooth pointsNumber:(int)nr;
  67. /**
  68. * 获取人脸框
  69. *
  70. *
  71. * @param index faceinfo model
  72. * @param isSmooth 是否关键点平滑,防止人脸抖动
  73. */
  74. - (MGDetectRectInfo *)GetRectAtIndex:(int)index isSmooth:(BOOL)isSmooth;
  75. /**
  76. * 获取人脸 3D信息
  77. * @param faceInfo faceInfo
  78. * @return 是否获取成功
  79. */
  80. - (BOOL)GetAttribute3D:(MGFaceInfo *)faceInfo;
  81. /**
  82. * 获取 眼状态
  83. * @param faceInfo faceInfo
  84. * @return 是否获取成功
  85. */
  86. - (BOOL)GetAttributeEyeStatus:(MGFaceInfo *)faceInfo;
  87. /**
  88. * 获取 嘴状态
  89. * @param faceInfo faceInfo
  90. * @return 是否获取成功
  91. */
  92. - (BOOL)GetAttributeMouseStatus:(MGFaceInfo *)faceInfo;
  93. /**
  94. * 获取 年龄
  95. * @param faceInfo faceInfo
  96. * @return 是否获取成功
  97. */
  98. - (BOOL)GetAttributeAgeGenderStatus:(MGFaceInfo *)faceInfo;
  99. /**
  100. 获取 Blurness 状态
  101. @param faceInfo faceInfo
  102. @return 是否获取成功
  103. */
  104. - (BOOL)GetBlurnessStatus:(MGFaceInfo *)faceInfo;
  105. /**
  106. 获取 Minorit 状态
  107. @param faceInfo faceInfo
  108. @return 是否获取成功
  109. */
  110. - (BOOL)GetMinorityStatus:(MGFaceInfo *)faceInfo;
  111. /**
  112. 获取人脸的 Feature 数据
  113. @param faceInfo faceinfo
  114. @return 是否获取成功
  115. */
  116. - (BOOL)GetFeatureData:(MGFaceInfo *)faceInfo;
  117. /**
  118. 比较两个人脸相似度, 必须改 MGFaceInfo 获取过 Feature 数据才有效
  119. 如果成功返回人脸相似度, 如果比对失败,返回 -1.0
  120. @param faceInfo MGFaceInfo 1
  121. @param faceInf2 MGFaceInfo 2
  122. @return 比对相似度
  123. */
  124. - (float)faceCompareWithFaceInfo:(MGFaceInfo *)faceInfo faceInf2:(MGFaceInfo *)faceInf2;
  125. /**
  126. 比较两个人脸相似度
  127. 如果成功返回人脸相似度, 如果比对失败,返回 -1.0
  128. @param featureData featureData 1
  129. @param featureData2 featureData 2
  130. @return 相似度
  131. */
  132. - (float)faceCompareWithFeatureData:(NSData *)featureData featureData2:(NSData *)featureData2;
  133. /** 开启检测新的一帧,在每次调用 detectWithImageData: 之前调用。 */
  134. - (void)beginDetectionFrame;
  135. /** 停止当前改帧的检测,在获取人脸详细信息后,需要主动调用该方法结束当前帧,以便进入下一帧 */
  136. - (void)endDetectionFrame;
  137. /**
  138. 释放算法资源
  139. 算法在计算时需要占用一些内存资源,必须在所有算法的句柄(handle)被释放后再调用
  140. @return 成功则返回 YES
  141. */
  142. - (BOOL)shutDown;
  143. #pragma mark - 类方法,获取 SDK 相关信息
  144. /**
  145. 获取版本号
  146. @return 版本号
  147. */
  148. + (NSString *)getSDKVersion;
  149. /**
  150. 获取 SDK jenkins 号
  151. @return SDK jenkins 号
  152. */
  153. + (NSString *)getJenkinsNumber;
  154. /**
  155. 清除track缓存
  156. @return 成功则返回 YES
  157. */
  158. - (BOOL)resetTrack;
  159. /**
  160. 获取 SDK 相关信息
  161. @param modelData model data
  162. @return sdk 相关信息
  163. */
  164. + (MGAlgorithmInfo *)getSDKAlgorithmInfoWithModel:(NSData *)modelData;;
  165. @end