iOS 使用百度的人脸识别登录验证,解决认证失败不跳转界面连续认证,认证相似度对比
在使用百度人脸识别出现的问题:小米6调用摄像机是黑白的一个情况,iOS上会出现识别准确性上的问题(多次代开认证,会通过)
人脸识别(活体验证):
1、芝麻认证 : 0.4元/次,需要企业企业认证、不能有与芝麻信用类似的业务,如:保险、、、
2、旷视 : 0.5/次.企业认证、业务限制
3、 百度人脸识别 :免费的---可以同时处理10条认证, 企业认证,
4、科大讯飞 人脸检测 2000万次 1年 7.2万 活体检测只能上传一段视频来检测 需要和商务沟通
我们使用的百度,,,,
需求:需要在认证中不跳转界面,失败:继续认证、成功:跳转。
----------------------------------------------------------
一、在认证结果中促发通知给 DetectionViewController 认证结果,
-(void)baiduVerifiResouts:(NSNotification*)notification{ if ([notification.object isEqualToString:@"yes"]) { //认证成功 [self closeAction]; }else{ //认证失败 self.hasFinished = NO; [IDLFaceDetectionManager.sharedInstance reset]; [[FaceSDKManager sharedInstance] clearTrackedFaces]; [[IDLFaceDetectionManager sharedInstance] startInitial]; [self.videoCapture startSession]; self.videoCapture.delegate = self; self.videoCapture.runningStatus = YES; } }
2、 需要将调用 closeAction 方法的地方注释
---------------------------------------------------------------------
二、认证相似度对比
在返回识别结果中,会把所有相似的人给返回,需要自己筛选出自己的相似度进行 对比
1、识别结果请求
[[NetAccessModel sharedInstance] searchFaceWithImageBaseString:bestImageStr userName:UserModelonline.userId completion:^(NSError *error, id resultObject) { NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:resultObject options:NSJSONReadingAllowFragments error:nil]; NSInteger type = 0; NSString* tip = @"识别失败!"; if ([dict[@"error_code"] intValue] == 0) { //获取层级字典 NSDictionary* result = dict[@"result"]; NSArray * user_list =result[@"user_list"]; //判断相似度符合的人数 大于0 继续 if ([result[@"user_list"] count] > 0 ) { //获取自己的相似度 进行对比 NSMutableDictionary * userDict = [NSMutableDictionary dictionary]; for (int i=0; i<user_list.count; i++) { NSDictionary * dict = user_list[i]; //根据自己的uid 获取到自己的相似度是多少 if ([dict[@"user_id"] isEqualToString:UserModelonline.userId]) { [userDict setDictionary:dict]; break; } } //相似度进行对比 大于90了 为识别成功 if (userDict.allKeys.count > 0) { if ([userDict[@"score"] intValue] > 90) { type = 1; tip = @"识别成功"; } }else{ NSLog(@"----------------------------------没有与自己相似的人啊"); } } else { tip = @"活体检测识别失败"; } } else { NSLog(@"失败了%@ = %@,%@,%@",UserModelonline.userId,dict[@"error_code"],dict[@"error_msg"],dict[@"log_id"]); } if(type==1){ //成功了 }else{ //失败了 }
三、 人脸注册 成功一次上传一张照片,最大上限20,超过后返回 报错