百度FaceSDK离线活体检测/人脸采集模拟编译问题

百度官方并没有提供FaceSDK离线活体检测的模拟器版本,也就是说集成了百度FaceSDK的项目将无法使用模拟器运行,在适配界面/系统版本带来了不便。

我们可以通过 TARGET_IPHONE_SIMULATOR 宏能区分当前运行设备是模拟器还是真机。

在使用 FaceSDKManager,IDLFaceLivenessManager,IDLFaceDetectionManager 的地方加上宏判断既可确保在模拟器编译项目时不编译以上内容。


- (IBAction)detectAction:(UIButton *)sender {
    
#ifdef  TARGET_IPHONE_SIMULATOR
    NSLog(@"模拟器不支持FaceSDK");
#else
    if ([[FaceSDKManager sharedInstance] canWork]) {
        NSString* licensePath = [[NSBundle mainBundle] pathForResource:FACE_LICENSE_NAME ofType:FACE_LICENSE_SUFFIX];
        [[FaceSDKManager sharedInstance] setLicenseID:FACE_LICENSE_ID andLocalLicenceFile:licensePath];
    }
    
    DetectionViewController* dvc = [[DetectionViewController alloc] init];
    UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:dvc];
    navi.navigationBarHidden = true;
    [self presentViewController:navi animated:YES completion:nil];
#endif
}

FaceBaseViewController.m

- (void)viewDidLoad {
    ...
#if !TARGET_IPHONE_SIMULATOR
    // 监听重新返回APP
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onAppWillResignAction) name:UIApplicationWillResignActiveNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onAppBecomeActive) name:UIApplicationDidBecomeActiveNotification object:nil];
    
    // 设置最小检测人脸阈值
    [[FaceSDKManager sharedInstance] setMinFaceSize:200];
    
    // 设置截取人脸图片大小
    [[FaceSDKManager sharedInstance] setCropFaceSizeWidth:400];
    
    // 设置人脸遮挡阀值
    [[FaceSDKManager sharedInstance] setOccluThreshold:0.5];
    
    // 设置亮度阀值
    [[FaceSDKManager sharedInstance] setIllumThreshold:40];
    
    // 设置图像模糊阀值
    [[FaceSDKManager sharedInstance] setBlurThreshold:0.7];
    
    // 设置头部姿态角度
    [[FaceSDKManager sharedInstance] setEulurAngleThrPitch:10 yaw:10 roll:10];
    
    // 设置是否进行人脸图片质量检测
    [[FaceSDKManager sharedInstance] setIsCheckQuality:YES];
    
    // 设置超时时间
    [[FaceSDKManager sharedInstance] setConditionTimeout:10];
    
    // 设置人脸检测精度阀值
    [[FaceSDKManager sharedInstance] setNotFaceThreshold:0.6];
    
    // 设置照片采集张数
    [[FaceSDKManager sharedInstance] setMaxCropImageNum:1];
    #endif
    ...
}

DetectionViewController.m、LivenessViewController.m

所有用到 IDLFaceDetectionManager、IDLFaceLivenessManager 的地方都需要添加
#if TARGET_IPHONE_SIMULATOR
// 模拟器
#else
// 真机
#endif

你可能感兴趣的:(百度FaceSDK离线活体检测/人脸采集模拟编译问题)