基于虹软人证核验 2.0 Android SDK开发集成入门
一、功能介绍
虹软人证核验 2.0 SDK(以下简称SDK)包含人脸检测、人脸跟踪、人证核验等能力,主要实现人证的1:1比对。
其中暴露对外的功能方法有:
active 引擎激活
init 引擎初始化
inputIdCardData 输入身份证图片进行人脸检测
onPreviewData 输入视频或图片数据进行人脸检测
compareFeature 人证特征比对
getVersion 获取sdk版本信息
unInit 销毁引擎
二、获取SDK
- 进入SDK的申请地址
https://ai.arcsoft.com.cn/product/verification.html - 填写信息申请并提交
申请通过后即可下载SDK,查看APP_ID和SDK_KEY
三、使用SDK
- 创建工程,并将下载解压出的jar和so添加到工程
- 激活引擎
//激活方法首次调用有网络和文件操作,后续只有文件操作,建议不要放在主线程中进行
int activeCode = IdCardVerifyManager.getInstance().active(MainActivity.this, Constants.APP_ID, Constants.SDK_KEY);
if (activeCode == IdCardVerifyError.OK || activeCode == IdCardVerifyError.MERR_ASF_ALREADY_ACTIVATED) {//激活成功或者已激活过的情况
} else {//激活失败的情况
}
- 创建人脸特征提取结果回调对象
//需要注意回调的结果位于子线程,compareFeature接口需要在主线程中调用
private IdCardVerifyListener idCardVerifyListener = new IdCardVerifyListener() {@Overridepublic void onPreviewResult(DetectFaceResult detectFaceResult, byte[] bytes, int i, int i1) {runOnUiThread(() -> {if (detectFaceResult.getErrCode() == IdCardVerifyError.OK) {//预览人脸特征提取成功, 若身份证人脸特征提取也成功,则可调用人证特征比对接口进行人证比对}});}@Overridepublic void onIdCardResult(DetectFaceResult detectFaceResult, byte[] bytes, int i, int i1) {runOnUiThread(() -> {if (detectFaceResult.getErrCode() == IdCardVerifyError.OK) {//身份证人脸特征提取成功, 若预览人脸特征提取也成功,则可调用人证特征比对接口进行人证比对}});}
};
- 初始化引擎,推荐在onCreate中执行
int initCode = IdCardVerifyManager.getInstance().init(MainActivity.this, idCardVerifyListener);
if (initCode != IdCardVerifyError.OK) {//初始化成功
} else {//初始化失败
}
- 传入身份证图像数据
//需要转化为nv21格式的数据,且需保证宽为4的倍数,高为2的倍数
DetectFaceResult result = IdCardVerifyManager.getInstance().inputIdCardData(nv21Data, width, height);
if (result.getErrCode() == IdCardVerifyError.OK) {//身份证人脸检测成功
} else {//身份证人脸检测失败
}
- 传入预览图像数据,在传入身份证图像数据后才会进行预览图像数据的特征提取
//需要转化为nv21格式的数据,且需保证宽为4的倍数,高为2的倍数
DetectFaceResult result = IdCardVerifyManager.getInstance().onPreviewData(nv21Data, width, height, true);
if (result.getErrCode() == IdCardVerifyError.OK) {//预览人脸检测成功
} else {//预览人脸检测失败
}
- 人证特征比对,身份证数据与预览数据都特征提取成功后调用
CompareResult compareResult = IdCardVerifyManager.getInstance().compareFeature(0.82d);
if (compareResult.getErrCode() == IdCardVerifyError.OK) {//人证特征比对成功
} else {//人证特征比对失败
}
- 销毁引擎,推荐在onDestroy中执行
IdCardVerifyManager.getInstance().unInit();
四、注意事项
- 线程安全
除了激活接口,SDK的接口都需要在主线程中进行调用,SDK内部对耗时操作进行了异步处理,不用担心主线程阻塞的问题。 - 数据格式
SDK目前只支持NV21格式的数据,且需保证数据的宽为4的倍数,高为2的倍数。 - 调用流程
需要注意的是,由于人脸特征提取比较耗时,所以SDK在调用inputIdCardData接口传入身份证数据后,onPreviewData接口才会进行预览数据的人脸特征提取。 - so库名冲突
SDK与Arcface 2.0 SDK及活体检测SDK存在so库名冲突问题,无法同时使用,建议单一使用SDK实现人证核验需求,若有其他更加复杂需求,也可使用Arcface 2.0 SDK进行人证核验业务逻辑的实现。
五、SDK参考文档:
Android平台开发指南:
http://ai.arcsoft.com.cn/manual/idcard_android_guide_v2.html
API接口说明
https://ai.arcsoft.com.cn/statics/mannual/idcardveri/2.0/android/index.html
基于虹软人证核验 2.0 Android SDK开发集成入门相关推荐
- android大疆飞控界面,DJI Android SDK 开发笔记(入门篇)
##大疆SDK开发笔记## #1.文档相关 2.Android SDK文档 接入Android的SDK都在这部分,飞控相关的接口. 3.Android UX SDK文档 大疆自定义的组件,已经跟飞机关 ...
- 虹软人证核验增值版-node.js调用C++SDK
一.前言 随着5G时代的到来,人脸识别技术越来越贴近我们的生活,对于开发人员来说要面临的挑战也越来越艰巨.虹软作为国内领先的人脸识别算法厂商之一,提供了多平台多语言的人脸识别SDK,使用场景广泛.产品 ...
- Android基于虹软(ArcSoft)实现从0到1的人脸识别demo
Android基于虹软(ArcSoft)实现从0到1的人脸识别demo 1.在虹软的开发者中心创建一个自己的应用,将APP_ID与SDK_KEY记录下来,后面会用到.创建完后就可以下载SDK了. 2. ...
- 实际开发的存储过程_实际生产中的 Android SDK开发总结| 完结
本文作者 作者:brucevanfdm 链接: https://zhuanlan.zhihu.com/p/163899902 本文由作者授权发布. 上一篇我们介绍了 SDK 开发的: 开篇与设计 Ex ...
- Android SDK 开发流程
Android SDK 开发流程 1创建library 1.点击file --> new---->new Module 2.点击 next 3.编写SDK内容 public class L ...
- Google Android SDK开发范例大全
1. 图书信息: Google Android SDK开发范例大全(第2版) 人民邮电出版社 2010-6-1 0:00:00 余志龙;陈昱勋;郑名杰;陈小凤;郭秩均 79 元 ISBN:97 ...
- AndroidStudio 集成海康威视 Android SDK,集成萤石Android SDK。
之前以为海康威视的android sdk 就是萤石的sdk,其实不是 海康威视的: 0: 相关的手机端软件:http://www.hikvision.com/cn/download_more_391. ...
- Google Android SDK开发范例大全(第2版)
内容简介 <Google Android SDK开发范例大全(第2版)>在上一版的基础上,以Android手机应用程序开发(采用AndroidSDK2.1)为主题,通过160多个范例全面且 ...
- Android SDK开发4之心得体会
目录 一. 前言 二.SDK分类 1.SDK简介 2.SDK 分类 三.SDK 设计 1 .核心原则 2.SDK 设计原则 3.接口易用性 4.命名规范要统一 5.跨端接口尽量保持一致 6.尽量不依赖 ...
最新文章
- Go 学习笔记(66)— Go 并发同步原语(sync.Mutex、sync.RWMutex、sync.Once)
- 超速电眼:全时成像芯片重塑机器视觉
- mysql之 explain、optimizer_trace 执行计划
- Django分页的基本实现办法
- android 关闭2g网络,中国联通将关闭2G网络,速来了解联通2g卡升级4g套餐方法
- int类型存小数 mysql_2020年最新版MySQL面试题(一)
- Java LinkedList void clear()方法与示例
- python3 gui协程_Python3进阶-协程
- 2018最新java基础学习路线
- Vmware中RedHat命令行和图形界面切换
- 网页预览时,仿宋_GB2312 字体不能正确显示,uni-app移动端字体不显示
- linux 交叉编译 makefile,简单谈谈Makefile和交叉编译工具链
- 计算二维离散随机变量的联合概率分布
- java动态添加成员变量,java如何访问成员变量
- Latex表格单元格内文本顶着上格线解决
- 约瑟夫问题 pku1012(转自奋斗青春(亚伟)blog)
- Latex 插入大括号分类情况
- 小冰的忍者团队,她在日本开启了怎样一种商业模式?
- 万变不离其宗之ZYNQ启动介绍
- eDairy-我的白日梦
热门文章
- LED灯亮灭模拟小星星第一句
- 天耀18期 – 03.Java基本语法【作业】.
- linux命令tcp和tt,Linux中tcpdump命令起什么作用呢?
- Java征兵系统(可拓展)
- 大数据信息时代,如何防止数据泄露,大数据防泄漏解决方案
- mysql统计没有参加考试的学生名单_sQL SERVER,帮我编写一个存储过程,查询没有参加考试的学生名单,要求显示姓名、学号,具体请补充:...
- 爆火出圈的chatGPT
- 从零双排java之打印流
- Reverse-2 - PE文件
- c#FileStream文件读写可能会出现乱码