一、功能介绍
虹软人证核验 2.0 SDK(以下简称SDK)包含人脸检测、人脸跟踪、人证核验等能力,主要实现人证的1:1比对。
其中暴露对外的功能方法有:
active 引擎激活
init 引擎初始化
inputIdCardData 输入身份证图片进行人脸检测
onPreviewData 输入视频或图片数据进行人脸检测
compareFeature 人证特征比对
getVersion 获取sdk版本信息
unInit 销毁引擎
二、获取SDK

  1. 进入SDK的申请地址
    https://ai.arcsoft.com.cn/product/verification.html
  2. 填写信息申请并提交
    申请通过后即可下载SDK,查看APP_ID和SDK_KEY

三、使用SDK

  1. 创建工程,并将下载解压出的jar和so添加到工程
  2. 激活引擎
//激活方法首次调用有网络和文件操作,后续只有文件操作,建议不要放在主线程中进行
int activeCode = IdCardVerifyManager.getInstance().active(MainActivity.this, Constants.APP_ID, Constants.SDK_KEY);
if (activeCode == IdCardVerifyError.OK || activeCode == IdCardVerifyError.MERR_ASF_ALREADY_ACTIVATED) {//激活成功或者已激活过的情况
} else {//激活失败的情况
}
  1. 创建人脸特征提取结果回调对象
//需要注意回调的结果位于子线程,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) {//身份证人脸特征提取成功, 若预览人脸特征提取也成功,则可调用人证特征比对接口进行人证比对}});}
};
  1. 初始化引擎,推荐在onCreate中执行
int initCode = IdCardVerifyManager.getInstance().init(MainActivity.this, idCardVerifyListener);
if (initCode != IdCardVerifyError.OK) {//初始化成功
} else {//初始化失败
}
  1. 传入身份证图像数据
//需要转化为nv21格式的数据,且需保证宽为4的倍数,高为2的倍数
DetectFaceResult result = IdCardVerifyManager.getInstance().inputIdCardData(nv21Data, width, height);
if (result.getErrCode() == IdCardVerifyError.OK) {//身份证人脸检测成功
} else {//身份证人脸检测失败
}
  1. 传入预览图像数据,在传入身份证图像数据后才会进行预览图像数据的特征提取
//需要转化为nv21格式的数据,且需保证宽为4的倍数,高为2的倍数
DetectFaceResult result = IdCardVerifyManager.getInstance().onPreviewData(nv21Data, width, height, true);
if (result.getErrCode() == IdCardVerifyError.OK) {//预览人脸检测成功
} else {//预览人脸检测失败
}
  1. 人证特征比对,身份证数据与预览数据都特征提取成功后调用
CompareResult compareResult = IdCardVerifyManager.getInstance().compareFeature(0.82d);
if (compareResult.getErrCode() == IdCardVerifyError.OK) {//人证特征比对成功
} else {//人证特征比对失败
}
  1. 销毁引擎,推荐在onDestroy中执行
IdCardVerifyManager.getInstance().unInit();

四、注意事项

  1. 线程安全
    除了激活接口,SDK的接口都需要在主线程中进行调用,SDK内部对耗时操作进行了异步处理,不用担心主线程阻塞的问题。
  2. 数据格式
    SDK目前只支持NV21格式的数据,且需保证数据的宽为4的倍数,高为2的倍数。
  3. 调用流程
    需要注意的是,由于人脸特征提取比较耗时,所以SDK在调用inputIdCardData接口传入身份证数据后,onPreviewData接口才会进行预览数据的人脸特征提取。
  4. 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开发集成入门相关推荐

  1. android大疆飞控界面,DJI Android SDK 开发笔记(入门篇)

    ##大疆SDK开发笔记## #1.文档相关 2.Android SDK文档 接入Android的SDK都在这部分,飞控相关的接口. 3.Android UX SDK文档 大疆自定义的组件,已经跟飞机关 ...

  2. 虹软人证核验增值版-node.js调用C++SDK

    一.前言 随着5G时代的到来,人脸识别技术越来越贴近我们的生活,对于开发人员来说要面临的挑战也越来越艰巨.虹软作为国内领先的人脸识别算法厂商之一,提供了多平台多语言的人脸识别SDK,使用场景广泛.产品 ...

  3. Android基于虹软(ArcSoft)实现从0到1的人脸识别demo

    Android基于虹软(ArcSoft)实现从0到1的人脸识别demo 1.在虹软的开发者中心创建一个自己的应用,将APP_ID与SDK_KEY记录下来,后面会用到.创建完后就可以下载SDK了. 2. ...

  4. 实际开发的存储过程_实际生产中的 Android SDK开发总结| 完结

    本文作者 作者:brucevanfdm 链接: https://zhuanlan.zhihu.com/p/163899902 本文由作者授权发布. 上一篇我们介绍了 SDK 开发的: 开篇与设计 Ex ...

  5. Android SDK 开发流程

    Android SDK 开发流程 1创建library 1.点击file --> new---->new Module 2.点击 next 3.编写SDK内容 public class L ...

  6. Google Android SDK开发范例大全

    1. 图书信息: Google Android SDK开发范例大全(第2版)     人民邮电出版社 2010-6-1 0:00:00 余志龙;陈昱勋;郑名杰;陈小凤;郭秩均 79 元 ISBN:97 ...

  7. AndroidStudio 集成海康威视 Android SDK,集成萤石Android SDK。

    之前以为海康威视的android sdk 就是萤石的sdk,其实不是 海康威视的: 0: 相关的手机端软件:http://www.hikvision.com/cn/download_more_391. ...

  8. Google Android SDK开发范例大全(第2版)

    内容简介 <Google Android SDK开发范例大全(第2版)>在上一版的基础上,以Android手机应用程序开发(采用AndroidSDK2.1)为主题,通过160多个范例全面且 ...

  9. Android SDK开发4之心得体会

    目录 一. 前言 二.SDK分类 1.SDK简介 2.SDK 分类 三.SDK 设计 1 .核心原则 2.SDK 设计原则 3.接口易用性 4.命名规范要统一 5.跨端接口尽量保持一致 6.尽量不依赖 ...

最新文章

  1. Go 学习笔记(66)— Go 并发同步原语(sync.Mutex、sync.RWMutex、sync.Once)
  2. 超速电眼:全时成像芯片重塑机器视觉
  3. mysql之 explain、optimizer_trace 执行计划
  4. Django分页的基本实现办法
  5. android 关闭2g网络,中国联通将关闭2G网络,速来了解联通2g卡升级4g套餐方法
  6. int类型存小数 mysql_2020年最新版MySQL面试题(一)
  7. Java LinkedList void clear()方法与示例
  8. python3 gui协程_Python3进阶-协程
  9. 2018最新java基础学习路线
  10. Vmware中RedHat命令行和图形界面切换
  11. 网页预览时,仿宋_GB2312 字体不能正确显示,uni-app移动端字体不显示
  12. linux 交叉编译 makefile,简单谈谈Makefile和交叉编译工具链
  13. 计算二维离散随机变量的联合概率分布
  14. java动态添加成员变量,java如何访问成员变量
  15. Latex表格单元格内文本顶着上格线解决
  16. 约瑟夫问题 pku1012(转自奋斗青春(亚伟)blog)
  17. Latex 插入大括号分类情况
  18. 小冰的忍者团队,她在日本开启了怎样一种商业模式?
  19. 万变不离其宗之ZYNQ启动介绍
  20. eDairy-我的白日梦

热门文章

  1. LED灯亮灭模拟小星星第一句
  2. 天耀18期 – 03.Java基本语法【作业】.
  3. linux命令tcp和tt,Linux中tcpdump命令起什么作用呢?
  4. Java征兵系统(可拓展)
  5. 大数据信息时代,如何防止数据泄露,大数据防泄漏解决方案
  6. mysql统计没有参加考试的学生名单_sQL SERVER,帮我编写一个存储过程,查询没有参加考试的学生名单,要求显示姓名、学号,具体请补充:...
  7. 爆火出圈的chatGPT
  8. 从零双排java之打印流
  9. Reverse-2 - PE文件
  10. c#FileStream文件读写可能会出现乱码