躁郁症吃什么药| 骨髓捐赠对自己有什么影响没有| 快闪店是什么意思| 太虚是什么意思| 为什么会长息肉| 晚上睡不着觉什么原因| 排档是什么意思| 9点是什么时辰| 万加一笔是什么字| 弈字五行属什么| 小孩荨麻疹吃什么药| 尿微量白蛋白高是什么意思| 熬夜头疼是什么原因| 三月十六是什么星座| 盖是什么意思| 蛰居是什么意思| 胎动频繁到什么程度说明缺氧| 毒唯什么意思| 包袱是什么意思| 什么工作赚钱最快| 1.14是什么星座| 蚊子怕什么| 好饭不怕晚什么意思| 胆囊炎吃什么消炎药| 什么人容易得癌症| 什么食物高蛋白含量高| 龙井是什么茶| 为什么头会一阵一阵的痛| 月经期间吃西瓜有什么影响| 牙龈肿了吃什么消炎药| 梦见自己洗头发是什么意思| 2022年是什么生肖年| 诏安是什么意思| 背道而驰什么意思| 胎教什么时候开始最好| 卵巢囊肿术后吃什么食物好| 基佬是什么意思| 镜子碎了有什么征兆吗| 7月份适合种什么菜| 维生素B3叫什么名字| 冰冻三尺非一日之寒什么意思| 贴秋膘是什么意思啊| 原生家庭是什么意思| 带刺的玫瑰是什么意思| 无名指比中指长代表什么| 安全监察是一种带有什么的监督| 乙肝表面抗体阴性是什么意思| 大专什么专业好就业| 徐长卿是什么药| 四十岁月经量少是什么原因| 孩子疱疹性咽峡炎吃什么药| hhh是什么意思| 为什么人一瘦就会漂亮| 什么粥最养胃健脾| 常吃山药有什么好处和坏处| 女人长期喝西洋参有什么好处| 氯化钠是什么东西| 脚肿挂什么科| 歆五行属什么| 94年属狗的是什么命| 外痔疮是什么样子图片| 什么是辐射| 梦见丢了一只鞋是什么意思| 小孩什么时候会说话| 小肚子痛吃什么药| 同归于尽是什么意思| 天安门以前叫什么| 便秘吃什么药效果最好| 天方夜谭是什么生肖| 近亲结婚生的孩子会得什么病| qs认证是什么意思| 激素六项都是查什么| 爰是什么意思| 1月10号什么星座| 什么叫犹太人| pas什么意思| 吃完避孕药不能吃什么东西| 桃子不能跟什么一起吃| 热射病是什么症状| 吃金针菇有什么好处| 异常脑电图说明什么| 氟苯尼考兽药治什么病| 等不到天黑烟火不会太完美什么歌| 黄花菜不能和什么一起吃| 身体内热是什么原因| 屁股黑是什么原因| 亚麻酸是什么东西| 浅表性胃炎吃什么药效果好| 文曲星什么意思| 中指和无名指发麻是什么原因| 三点水加尺念什么| 骗婚是什么意思| 什么是小奶狗| 尿潴留是什么症状| 金字旁的字和什么有关| 孕妇嗓子疼可以吃什么药| 胸部里面有个圆圆的硬东西是什么| 口述是什么意思| 五岳是什么| 什么洗发水去屑效果好| 屁股抽筋疼是什么原因| 梅毒rpr是什么| 心脏早博是什么意思| 更年期吃什么药| 肌酐300多属于什么期| 乍一看是什么意思| 孩子气是什么意思| 病毒是什么生物| 口水是甜的是什么原因| 子宫脱垂有什么症状| 幅度是什么意思| 粉是什么做的| 树膏皮是什么皮| 嘴巴里起泡是什么原因| 吃鸡什么意思| 甲状腺球蛋白低说明什么| 初中学历能做什么工作| 子宫癌有什么症状| 限购是什么意思| 家有喜事指什么生肖| 吴孟达什么时候去世的| 尿失禁吃什么药最好| 飞蓬草有什么功效| 艺五行属什么| 小娘皮什么意思| 打呼噜是什么原因引起的| 看牙齿挂什么科| 维生素b族为什么不能晚上吃| 光敏树脂是什么材料| edenbo是什么牌子| 洞房花烛是什么生肖| 梅毒吃什么药| 抑郁症是什么| 同一首歌为什么停播了| 1月18是什么星座| 什么是cos| 猪蹄子炖什么好吃| 北极熊为什么不怕冷| 乳香是什么东西| 今年是什么| 爬金字塔为什么会死| ivf是什么意思| 脚底痛什么原因| 东字五行属什么| 棉纶是什么面料| 什么叫根管治疗牙齿| 猪属什么五行| 白细胞偏低吃什么药| 枳是什么意思| clean什么意思| 轻微脑震荡有什么症状| 卉是什么意思| 颢读什么| 检查血压挂什么科| 吃什么去湿气| 晚上8点是什么时辰| 4月是什么星座的| 被子植物是什么| 清明节在什么时候| 胎儿股骨长是什么意思| 什么的阳光| 4月17日是什么星座| 便血挂什么科室| 海啸是什么意思| 射精快吃什么药| 砂舞是什么意思| 芈月是秦始皇的什么人| 体内火气大吃什么降火| 夏天吹空调感冒了吃什么药| 阴历六月是什么月| 汗味重是什么原因| 顶臂长是什么意思| 夜夜笙歌什么意思| 蒙脱石是什么东西| 麝香保心丸治什么病| 经络是什么意思| 脚真菌感染用什么药| 性格缺陷是什么意思| 吃大米配什么菜| 吃什么提高免疫力最好最快| 子宫复旧不良有什么症状| 为道日损什么意思| 植物园有什么植物| u型压迹是什么意思| 什么叫渣男| 7月15是什么节| 孕妇吃什么鱼对胎儿好| 腿肿是什么原因引起的怎么办| 光动能手表是什么意思| 珍珠龟吃什么| 为什么困但是睡不着| 第六感是什么| 孔雀男是什么意思| 经常想吐恶心是什么原因| 脾虚湿盛吃什么药| 吃什么疏通血管最快| 黄金发红是什么原因| 拉拉裤是什么| 女性备孕吃什么养卵泡| 女人喝什么茶好减肥| sapphire手表什么牌子| 1990是什么生肖| 日午念什么| 处女座和什么星座最配| 三唑仑是什么药| 冰瓷棉是什么面料| 水浒传是什么朝代| mrmrs是什么牌子| 尿潴留吃什么药| 李知恩为什么叫iu| 69年属什么| 深圳副市长什么级别| 木堂念什么| 鲲之大的之是什么意思| 氢化聚异丁烯是什么| 子夜是指什么时间| 胰腺炎是什么原因引起的| 血小板低是什么病| 夏天吹空调感冒了吃什么药| 买车选什么品牌| 八月20号是什么星座| lov是什么意思| 小宝贝是什么意思| emba是什么意思| 蛇缠腰是什么病| 磨盘有什么风水说法| 公筷是什么意思| 尪痹片主治什么| nuskin是什么牌子| 吐槽是什么意思| 梦见撞车是什么预兆| 纤维蛋白原是什么| 高血压要注意什么| 12月17日什么星座| smart是什么| 手指甲上有白点是什么原因| 水瓶座和什么座最配| 控诉是什么意思| 胃气上逆是什么原因造成的| 上头了是什么意思| 小狗能吃什么水果| 女性手麻是什么原因| o型血和b型血的孩子是什么血型| 牛头人是什么意思| 两毛四是什么军衔| 女人吃什么补充胶原蛋白| 黑枸杞泡茶是什么颜色| 萤火虫为什么越来越少| 电饭锅内胆什么材质好| 豁达是什么意思| 断档是什么意思| 肚子左边疼是什么原因| 前列腺炎吃什么药最有效| 梦见自行车是什么意思| 智五行属性是什么| 狗贫血吃什么补血最快| 吃什么水果减肥最快| 减肥晚餐适合吃什么| 腿部发痒是什么原因引起的| 减肥适合吃什么水果| 奎字五行属什么| 做梦梦见搬家是什么意思| 什么食物降胆固醇最好| 规培是什么意思| 百度
资讯 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

交管现新神器 驾驶员乱按喇叭将被抓拍罚500元

百度 讲话站位高远、居安思危、内涵丰富、切中要害,具有很强的政治性、思想性、针对性、指导性,充分体现了以习近平同志为核心的党中央勇于自我革命,从严管党治党,持之以恒正风肃纪,夺取反腐败斗争压倒性胜利的历史担当和坚强决心。

本文档介绍了标准级APP实名认证方案配置流程,以及APP集成开发流程。

一、 准备工作

在正式集成前,需要做一些准备工作,完成一些账号、应用及配置,具体如下:

Step1: 注册成为开发者

在使用百度人脸实名认证方案之前,首先需注册百度智能云账号,账号注册方式请参考账号注册指南

百度智能云账号注册完成以后,为顺利调用百度AI能力,需完成企业认证。具体认证方式请参考企业认证指南

Step2:创建应用

2.1 输入应用名称,领取免费额度

  • 创建好账号后,在正式调用AI 能力之前,需首先创建应用,应用是调用服务的基础能力单元。
  • 同时领取接口所需的免费调用额度,用于接入测试。如下图所示:
image.png
  • 除人脸服务接口的免费调用额度外,还需领取身份证识别接口的免费调用额度,用来调用身份证OCR识别功能(必须领取,否则会报错服务异常),点击此处,按下图所示进行领取。
  • 如您之前已经领取过免费额度,无需重复领取,请跳至下一步骤。

2.2 勾选所需接口

  • 人脸识别服务相关接口已默认勾选且不可取消。

    image.png
  • 注:「接口选择」过程中,还需勾选「文字识别」中的「身份证识别」接口,用于实现身份核验流程中的身份证识别功能。如下图所示。
实名认证系统-接口选择-1.gif

2.3 输入应用包名

  • 在「文字识别包名」处选择「需要」,并根据您的APP应用信息填写包名。此处为必要操作,否则将无法顺利下载集成文件。至此应用创建完成。
image.png

2.4 获取密钥信息(AK/SK)

完成应用创建后,平台将会分配给您此应用的相关凭证,主要为AppID、API Key、Secret Key,以上三个信息是您应用实际开发的主要凭证,每个应用之间各不相同,请您妥善保管。您可在控制台的应用管理页面找到以上信息。如下图所示

image.png image.png

该AK/SK用于调用在线API 如:身份验证。在之后下载的集成文件(示例工程)中需要填写正确的AK/SK以顺利集成。

注:开发中请注意区分多份AK/SK(API Key、Secret Key),若填写的AK/SK与开发的应用不对应,会产生鉴权错误。

Step3:创建项目

  • 进入控制台-人脸实名认证页面,选择『项目管理』页面,点击『新建项目』,进行项目创建,如下图所示。

创建项目前,请确保您在应用控制台已创建应用,若您未创建应用,请参考Step2创建应用后,再进行项目创建.

image.png

Step4:创建方案

  • 项目创建完成后,点击「方案管理」进入方案管理页面,在这里您可以为您的项目创建不同的方案,如下图所示。
image.png

若您的场景为APP场景(安卓/IOS系统),『场景方案』请选择APP实名认证方案;

若您的场景为微信、H5页面,『场景方案』请选择H5实名认证方案。

image.png

4.1 身份信息录入

  • 身份信息录入支持选择用户手动输入OCR拍照采集,如下图所示

实名认证系统-身份信息录入-1.gif

OCR拍照采集:会在之后生成的APP集成文件内集成OCR采集SDK,在本地进行身份证质量校验,并判断是否为身份证证件。 (OCR拍照采集支持实时采集和相册上传两种形式。推荐您使用实时采集,可以在一定程度增加方案的安全性及便捷性。)

手动输入:支持用户手动输入姓名+身份证号信息。

4.2 离线采集SDK配置

image.png
  • 填写授权标识:选择SDK的授权标识信息。

若您还未申请授权标识信息,请点击『新建授权』,并填写相关信息进行申请,申请过程如下图所示。

image.png image.png
  • 图像质量控制(本地):分为严格、正常、宽松三个等级,等级越严格,对采集图片的角度、模糊度、遮挡等信息参数把控越高,推荐使用正常。

此项配置为离线采集SDK端对采集图片的质量要求,推荐实名认证场景选择严格或正常模式。图片质量越好,云端接口传输的通过率越高。

  • 活体检测设置(本地):离线采集 SDK在前端要求用户做出指定动作,并检测动作的完成情况。在该过程,SDK 会随机抓取几帧图像进行本地活体检测,检测通过后将图片传至后台进行下一步检测。

此项配置为离线采集SDK端的活体检测动作,可对动作数量及顺序进行配置。推荐采用随机顺序进行三个以上动作的校验。

附录:

质量控制参数 「宽松」 「正常」 「严格」
光照最小值 30 40 60
光照最大值 240 220 200
遮挡-左眼 0.95 0.8 0.4
遮挡-右眼 0.95 0.8 0.4
遮挡-鼻子 0.95 0.8 0.4
遮挡-嘴巴 0.95 0.8 0.4
遮挡-左脸 0.95 0.8 0.4
遮挡-右脸 0.95 0.8 0.4
遮挡-下巴 0.95 0.8 0.4
姿态-俯仰角 30 20 15
姿态-左右角 18 18 15
姿态-旋转角 30 20 15
模糊度 0.8 0.6 0.4

4.3 人脸实名认证API配置

image.png
  • 人脸实名认证接口:标准级实名认证方案默认接入 人脸实名认证 API接口
  • 图像质量检测:分为正常与宽松两个等级,等级设置越严格,对图片角度、模糊度、遮挡等信息参数把控越高,推荐使用宽松。
  • 活体检测:分为严格、正常、宽松三个等级,不同等级对应不同的活体检测阈值。等级设置越严格,对活体检测相关参数信息的把控越高。不同等级对应指标可参考下表,推荐使用正常。

活体检测阈值:活体检测得分高于此阈值,即判断为活体

误拒率(FRR):指误将活体用户判断为非活体的概率。如误拒率为0.5%,指1000次真人请求,会有5次因为活体分数低于阈值被错误拒绝。

控制度 对应阈值 说明
宽松 0.05 万分之一活体误拒率
正常(推荐) 0.3 千分之一活体误拒率
严格 0.9 百分之一活体误拒率
  • 阈值:用户人脸图片与公安权威数据源中人脸的相似度得分阈值,得分超过此阈值,即被判断为同一人。阈值分数相关指标可参考下表,推荐阈值为80。
阈值分数 误识率 识别率
60 0.781615% 99.550128%
70 0.096534% 98.307626%
78 0.015570%(万分之一) 95.672664%
80 (推荐) 0.009342%(低于万分之一) 94.323051%

Step5:提交方案,获取示例工程

完成上述方案配置后,点击『提交』,进入方案管理页面,下载IOS/安卓版集成文件(含示例工程)进行SDK端集成使用。

image.png

Step4中方案配置的参数会自动生成至集成文件(含示例工程)中,方便开发使用。 注意:请谨慎修改APP方案流程,修改后需要重新下载集成文件进行使用。

具体开发操作请参考以下步骤。

二、 集成逻辑

2.1 IOS集成

1、打开或者新建一个项目。

2、右键点击项目,会出现一个添加菜单,在菜单中选择『Add Files to“此处是你的项目名字”…… 』,如下图所示:

img

3、在添加文件弹出框里面选择申请到的license和SDK添加进来。如下图:

注意:license为百度官方提供,刚才在后台下载的文件(文件名称:idl-license.face-ios)

SDK包含下面几个文件:

  • IDLFaceSDK.framework
  • com.baidu.idl.face.faceSDK.bundle
  • com.baidu.idl.face.model.bundle
  • com.baidu.idl.face.live.action.image.bundle
  • AipOcrSdk.framework
  • AipBase.framework
  • IdcardQuality.framework

img


img

4、确认下 Bundle Identifier 是否是申请license时填报的那一个.

5、注意:license 和 Bundle Identifier 为一一对应关系,填错了会导致SDK不可用.

img

6、 FACE_LICENSE_ID这个参数填写百度官方给的LicenseID

FaceParameterConfig.h 文件中填写下面几项。

img

7、选择链接C++标准库。

img

8、如果没有使用pod管理第三方库的话,请在Build Setting Linking Other Linker Flags 上面加入 –ObjC选项。如果用了pod请忽略,因为pod会自动添加上。

img

以下为示例工程调用身份验证的代码片段:

2.1.1 OCR身份证识别集成

把下载下来的License文件(文件名:aip.license),添加到项目里面,无需更改文件名称,然后在AppDelegate添加以下代码引用进去。

img

FaceParameterConfig.h里面设置下载下来的License文件的名字和后缀。

img

通过API调用ViewController进行身份证扫描

img

详细调用文档,请参考 OCR-iOS-SDK文档

2.1.2 人脸SDK集成

2.1.2.1 授权初始化

把下载下来的License文件(文件名:idl.license.face-ios),添加到项目里面,无需更改文件名称,然后在AppDelegate添加以下代码引用进去。

img

FaceParameterConfig.h里面设置下载下来的License文件的名字和后缀。

2.1.2.2 接口参数及调用说明

img

(1)动作采集

调用IDLFaceLivenessManager类的:

/*带黑边的方法-通过图片质量控制
- (void)livenessStratrgyWithImage:(UIImage *)image previewRect:(CGRect)previewRect detectRect:(CGRect)detectRect completionHandler:(LivenessStrategyCompletion)completion;
/*不带黑边*/
-(void) livenessNormalWithImage:(UIImage *)image previewRect:(CGRect)previewRect detectRect:(CGRect)detectRect completionHandler:(LivenessNormalCompletion)completion;

参数说明

  • previewRect 人脸图片大小,类型:Rect
  • detectRect 人脸检测区域大小,类型:Rect
  • completion 完成后返回照片和状态结果

说明

检测图片中的人脸信息,完成人脸图像采集和人脸活体检测,返回检测状态和结果。

使用方法如下

img

图片 key
抠图 bestImage
原图 originalImage
按要求数量的抠图 crop%d(%d为第几张,从0开始)
按要求数量的原图 original%d(%d为第几张,从0开始)

(2)人脸采集 调用IDLFaceDetectionManager类的:

/*带黑边的方法-通过图片质量控制*/ 
- (void)detectStratrgyWithQualityControlImage:(UIImage *)image previewRect:(CGRect)previewRect detectRect:(CGRect)detectRect completionHandler:(DetectStrategyCompletion)completion;
/*不带黑边*/
- (void)detectStratrgyWithNormalImage:(UIImage _)image previewRect:(CGRect)previewRect detectRect:(CGRect)detectRect completionHandler:(DetectStrategyCompletion)completion;

参数说明

previewRectdetctRect是为了做距离检测而定义的,为了在上层封装判断脸是否在框内/离太远/离太近。

  • image:相机获取的图片
  • previewRect:间接定义的最大距离的 maxRect 和最小距离的 minRect。
  • detectRect:实际采集区域
  • completion:回调

说明

检测图片中的人脸信息,完成人脸图像采集和人脸活体检测,返回检测状态和结果。

使用方法如下

img | 图片 | key | | ---- | ------------- | | 原图 | originalImage | | 抠图 | bestImage | (3)设置人脸功能控制参数

具体方法详见如下:

 // 设置鉴权
- (void)setLicenseID:(NSString *)licenseID andLocalLicenceFile:(NSString *)licensePath andRemoteAuthorize:(BOOL)remoteAuthorize;

// 最小检测人脸阈值,默认40
- (void)setMinFaceSize:(int)width;

// 截取人脸图片大小,默认400
- (void)setCropFaceSizeWidth:(CGFloat)width;

// 人脸检测精度阈值,默认0.5f
- (void)setNotFaceThreshold:(CGFloat)th;

// 人脸遮挡阈值,默认0.5
- (void)setOccluThreshold:(CGFloat)thr;

// 亮度阈值,默认90
- (void)setIllumThreshold:(CGFloat)thr;

// 图像模糊阈值,默认0.5
- (void)setBlurThreshold:(CGFloat)thr;

// 头部姿态角度,默认12,10,10
- (void)setEulurAngleThrPitch:(float)pitch yaw:(float)yaw roll:(float)roll;

//设置无黑边抠图的数量,默认1
- (void)setMaxCropImageNum:(int)imageNum;

//设置最大人脸检测数量,默认1
- (void)setMaxDetectNum:(int)detectNum;

//设置有黑边抠图方式的旋转角度,默认2.0f
- (void)setCropEnlargeRatio:(float)cropEnlargeRatio;

// 检测时间,默认10
- (void)setConditionTimeout:(CGFloat)timeout;

调用方法:

img

(4)检测功能初始化

- (int)initCollect;

调用方法:

img

(5)检测功能释放

- (int)uninitCollect

参数:

返回:

(6)活体动作设置

- (void)livenesswithList:(NSArray *)array order:(BOOL)ordernumberOfLiveness:(NSInteger)numberOfLiveness

参数:

  • array: 活体动作列表
  • order: 是否按顺序进行活体动作
  • numberOfLiveness: 活体动作数目(array为nil是起作用)

返回:

说明:

  • 活体动作设置

2.2 安卓集成

2.2.1 OCR身份证识别集成

  • 把申请的license(aip.license)放到到项目中app module下的assets目录中
  • 修改app的build.gradle包名为申请时填入的包名 img
  • 拷贝ocr-ui到您的工程中

接下来调用具体请看示例工程

1、在首页面初始化OCR SDK(在HomeActivity.java中)

img

2、跳转至身份证扫描页面进行身份证扫描(在HomeActivity.java中)

img

3、调用身份证识别请求接口api进行身份证识别(在IdCardRecognizeActivity.java中) 其中请求参数如下:

请求参数 说明
image 身份证扫描的图像
id_card_side 身份证的正反面类型
detect_risk 是否开启旋转识别

img

4、获得身份证号码和姓名后进入人脸活体验证步骤

详细调用文档,请参考 OCR-Android-SDK文档

2.2.2 人脸SDK集成

1、授权参数

(1)把申请的license(idl-license.face-android")放到到项目中app module下的assets目录中

(2)修改 Config.java 类中的参数

人脸实名认证控制台创建完APP方案后,会自动生成LicenseID和LicenseFileName信息,这里您只需要填写apiKey和secretkey信息即可。

public class Config {
    // 为了apiKey,secretKey为您调用百度人脸在线接口的,如注册,比对等。
	// 为了的安全,建议放在您的服务端,端把人脸传给服务器,在服务端端
	// license为调用sdk的人脸检测功能使用,人脸识别 = 人脸检测(SDK功能)+ 人脸比对(服务端API)
    public static String apiKey = "替换为你的apiKey(ak)";
    public static String secretKey = "替换为你的secretKey(sk)";
    public static String licenseID = "替换为你的licenseID,后台SDK管理界面中,已经生成的licenseID,如:test-face-android";
    public static String licenseFileName = "替换为你的license文件";
}

(3)配置签名(申请license时的md5为打包签名的文件,所以必须用申请license的签名文件

app->build.gradle->android->signingConfigs
signingConfigs {
        def password = "替换为签名密码"
        def alias = "替换为签名别名"
        def filePath = "替换为签名文件路径"  //如  ../facesharp.jks//签名文件路径
        debug {
            keyAlias alias
            keyPassword password
            storeFile file(filePath)
            storePassword(password)
        }
        release {
            keyAlias alias
            keyPassword password
            storeFile file(filePath)
            storePassword(password)
        }
    }

(4)修改包名 app->build.gradle->android->defaultConfig ->applicationId您申请license时填的包名

img

2、初始化人脸相关SDK(在HomeActivity.java**中)

private void initLicense() {
    setFaceConfig();
    // 为了android和ios 区分授权,appId=appname_face_android ,其中appname为申请sdk时的应用名
    // 应用上下文
    // 申请License取得的APPID
    // assets目录下License文件名
    FaceSDKManager.getInstance().initialize(mContext, 
    Config.licenseID, Config.licenseFileName, new IInitCallback() {
            @Override
            public void initSuccess() {
            // 初始化OCR SDK 使用的license是aip.license,名字不能修改
                initOCRSDK();
            }

            @Override
            public void initFailure(final int errCode, 
            final String errMsg) {
                runOnUiThread(new Runnable() {
                   @Override
                   public void run() {
                       Log.e(TAG, "初始化失败 = " + errCode + " " + errMsg);
                       showToast("初始化失败 = " + errCode + ", " + errMsg);
                       mIsInitSuccess = false;
                   }
                });
            }
        });
    }

3、设置配置参数,如不设置,将使用默认值(在HomeActivity.java中)

    private void setFaceConfig() {
        FaceConfig config = FaceSDKManager.getInstance().getFaceConfig();
        mConsoleConfig = ConsoleConfigManager.getInstance(mContext).getConfig();
        // -----TODO:以下为通过console平台获取到的配置信息-----
        // 设置模糊度阈值
        config.setBlurnessValue(mConsoleConfig.getBlur());
        // 设置光照阈值(范围0-255)
        config.setBrightnessValue(mConsoleConfig.getIllumination());
        // 设置遮挡阈值
        config.setOcclusionValue(mConsoleConfig.getOcclusion());
        // 设置活体动作,通过设置list,LivenessTypeEunm.Eye, LivenessTypeEunm.Mouth,
        // LivenessTypeEunm.HeadUp, LivenessTypeEunm.HeadDown, LivenessTypeEunm.HeadLeft,
        // LivenessTypeEunm.HeadRight, LivenessTypeEunm.HeadLeftOrRight
        config.setLivenessTypeList(mConsoleConfig.getActions());
        // 设置动作活体是否随机
        config.setLivenessRandom(mConsoleConfig.isFaceVerifyRandom());
        // 风控加密类型,0:普通版;1:加密版
        config.setSecType(mConsoleConfig.getSecType());

        // -----TODO:以下不需要通过console平台配置,需要手动修改-----
        // 设置可检测的最小人脸阈值
        config.setMinFaceSize(FaceEnvironment.VALUE_MIN_FACE_SIZE);
        // 设置可检测到人脸的阈值
        config.setNotFaceValue(FaceEnvironment.VALUE_NOT_FACE_THRESHOLD);
        // 设置人脸姿态角阈值
        config.setHeadPitchValue(FaceEnvironment.VALUE_HEAD_PITCH);
        config.setHeadYawValue(FaceEnvironment.VALUE_HEAD_YAW);
        // 设置闭眼阈值
        config.setEyeClosedValue(FaceEnvironment.VALUE_CLOSE_EYES);
        // 设置图片缓存数量(非动作活体使用)
        config.setCacheImageNum(FaceEnvironment.VALUE_CACHE_IMAGE_NUM);
        // 设置口罩判断开关以及口罩阈值
        config.setOpenMask(FaceEnvironment.VALUE_OPEN_MASK);
        config.setMaskValue(FaceEnvironment.VALUE_MASK_THRESHOLD);
        // 设置开启提示音
        config.setSound(ExampleApplication.isOpenSound);
        // 原图缩放系数
        config.setScale(FaceEnvironment.VALUE_SCALE);
        // 抠图高的设定,为了保证好的抠图效果,我们要求高宽比是4:3,所以会在内部进行计算,只需要传入高即可
        config.setCropHeight(FaceEnvironment.VALUE_CROP_HEIGHT);
        // 抠图人脸框与背景比例
        config.setEnlargeRatio(FaceEnvironment.VALUE_CROP_ENLARGERATIO);
        // 选择针对人脸采集输出图片的类型进行加密,0:原图,1:抠图
        config.setOutputImageType(FaceEnvironment.VALUE_OUTPUT_IMAGE_TYPE);
        FaceSDKManager.getInstance().setFaceConfig(config);
    }

4、开始进行人脸采集 非动作活体版:(在FaceDetectActivity.java中) (1)在摄像头的回调方法onPreviewFrame(byte[] data, Camera camera)中调用FaceSDKManager.getInstance().getDetectStrategyModule()获得IDetectStrategy对象。(该方法每次调用都会返回一个新对象,建议只调用一次)。

(2)调用IDetectStrategy.setPreviewDegree(int degree);设置预览图片的旋转角度。 调用IDetectStrategy.setDetectStrategySoundEnable(boolean flag);设置是否开启语音。 调用IDetectStrategy.setDetectStrategyConfig(Rect previewRect, Rect detectRect, IDetectStrategyCallback callback);设置预览框的大小,人脸检测框的坐标和回调。

(3)多次调用detectStrategy(byte[] imageData);进行人脸图片采集。

(4)实现IDetectStrategyCallback.onDetectCompletion(FaceStatusNewEnum status, String message, HashMap<String, ImageInfo> base64ImageCropMap, HashMap<String, ImageInfo> base64ImageSrcMap);回调方法并处理结果。其中base64ImageCropMap为采集到的指定数量的抠图,base64ImageSrcMap为采集到的指定数量的原图。

(5)获取采集到的最优抠图和原图,即在上述第(4)步的IDetectStrategyCallback.onDetectCompletion();回调方法中调用getBestImage(HashMap<String, ImageInfo> imageCropMap, HashMap<String, ImageInfo> imageSrcMap);

其实现如下: img
img

动作活体版:(在FaceLivenessActivity.java中) (1)在摄像头的回调方法onPreviewFrame(byte[] data, Camera camera)中调用FaceSDKManager.getInstance().getLivenessStrategyModule(ILivenessViewCallback)获得ILivenessStrategy对象。(该方法每次调用都会返回一个新对象,建议只调用一次)。

(2)调用ILivenessStrategy.setPreviewDegree(int degree);设置预览图片的旋转角度。 调用ILivenessStrategy.setLivenessStrategySoundEnable(boolean flag);设置是否开启语音。 调用ILivenessStrategy.setLivenessStrategyConfig(List<LivenessTypeEnum> livenessList, Rect previewRect, Rect detectRect, ILivenessStrategyCallback callback);设置动作活体类型、预览框的大小,人脸检测框的坐标和回调。

(3)多次调用livenessStrategy(byte[] imageData);进行人脸图片采集。

(4)实现ILivenessStrategyCallback.onDetectCompletion(FaceStatusNewEnum status, String message, HashMap<String, ImageInfo> base64ImageCropMap, HashMap<String, ImageInfo> base64ImageSrcMap, int currentLivenessCount);回调方法并处理结果。其中base64ImageCropMap为采集到的指定数量的抠图,base64ImageSrcMap为采集到的指定数量的原图。

(5)获取采集到的最优抠图和原图,即在上述第(4)步的ILivenessStrategyCallback.onDetectCompletion();回调方法中调用getBestImage(HashMap<String, ImageInfo> imageCropMap, HashMap<String, ImageInfo> imageSrcMap);

其实现如下: img

img

5、跳转至身份核验接口调用页面,需要传入:图片的base64、图片加密类型(加密、不加密)、姓名、身份证号 (在FaceDetectExpActivity.javaFaceLivenessExpActivity.java中)

img

6、获取accessToken,用于调用接口(在CollectVerifyActivity.java中)

注意:为了防止ak、sk泄露,建议把ak、sk放在服务端,移动端通过服务端去拉取token(目前是在工程中的Config.java中)

img

7、根据离线采集得到的人脸图片(抠图或原图),进行人脸实名认证(在CollectVerifyActivity.java中)

提示:为了安全及维护成本考虑,我们建议您将SDK获取的人脸图像,推送到服务器端,由服务器端进行API调用,并将结果返回给客户端APP

若业务对安全性要求较高,推荐升级为具备安全加密大数据风控功能的增强级人脸实名认证方案金融级人脸实名认证方案

其中请求参数如下:

请求参数 含义 说明
image_type 图片类型 BASE64:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M;图片尺寸不超过1920*1080
image 图片信息 图片信息(总数据大小应小于10M),图片上传方式根据image_type来判断
name 姓名 需要是UTF-8编码的中文
id_card_number 身份证号
quality_control 图片质量控制 NONE: 不进行控制
LOW:较低的质量要求
NORMAL: 一般的质量要求
HIGH: 较高的质量要求
默认 NONE
liveness_control 活体检测控制 NONE: 不进行控制
LOW:较低的活体要求(高通过率 低攻击拒绝率)
NORMAL: 一般的活体要求(平衡的攻击拒绝率, 通过率)
HIGH: 较高的活体要求(高攻击拒绝率 低通过率)
默认 NONE

img
img

上一篇
方案简介
下一篇
增强级APP端实名认证方案
妍什么意思 羊癫疯有什么症状表现 老板是什么意思 湿疹用什么药效果好 甲状腺功能亢进吃什么药
为什么牛肝便宜没人吃 腰痛是什么原因 人的肝脏在什么位置 quest是什么车 打仗是什么意思
医院有什么科室 南京市徽为什么是貔貅 世子是什么意思 仙草是什么草 睡觉被憋醒是什么原因
长方脸适合什么样的发型 朔望月是什么意思 小孩吃榴莲有什么好处 杜甫的诗被称为什么 开除党籍有什么后果
psa升高代表什么hcv9jop6ns8r.cn 藏毛窦是什么病hcv9jop5ns3r.cn 云仓是什么hcv9jop0ns7r.cn 血小板低有什么危险hcv8jop3ns6r.cn 皮肤癣用什么药hcv7jop9ns4r.cn
居住证是什么hcv8jop8ns9r.cn 天牛吃什么食物hcv8jop9ns0r.cn 什么是象形字imcecn.com 疥疮用什么药膏好得快hcv9jop2ns0r.cn 柯字五行属什么hcv8jop0ns1r.cn
湿热吃什么食物好得快xinjiangjialails.com 流鼻血不止是什么原因hcv9jop7ns0r.cn 老佛爷是什么牌子luyiluode.com 心率是什么hcv8jop2ns8r.cn 众什么意思hcv8jop3ns2r.cn
沙门氏菌是什么hcv8jop7ns4r.cn 蝙蝠是什么类动物hcv8jop6ns1r.cn 龟头敏感用什么药hcv8jop3ns4r.cn 煲排骨汤放什么材料好xianpinbao.com 乳晕是什么意思hcv8jop5ns8r.cn
百度