基於虹軟人證覈驗 2.0 Android SDK開發集成入門

1、功能介紹 虹軟人證覈驗 2.0 SDK(如下簡稱SDK)包含人臉檢測、人臉跟蹤、人證覈驗等能力,主要實現人證的1:1比對。 其中暴露對外的功能方法有: active 引擎激活 init 引擎初始化 inputIdCardData 輸入身份證圖片進行人臉檢測 onPreviewData 輸入視頻或圖片數據進行人臉檢測 compareFeature 人證特徵比對 getVersion 獲取sdk版本信息 unInit 銷燬引擎html

2、獲取SDKandroid

  1. 進入SDK的申請地址 https://ai.arcsoft.com.cn/product/verification.html
  2. 填寫信息申請並提交 申請經過後便可下載SDK,查看APP_ID和SDK_KEY

3、使用SDK安全

  1. 建立工程,並將下載解壓出的jar和so添加到工程

  1. 激活引擎
//激活方法首次調用有網絡和文件操做,後續只有文件操做,建議不要放在主線程中進行
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() {
    @Override
    public void onPreviewResult(DetectFaceResult detectFaceResult, byte[] bytes, int i, int i1) {
        runOnUiThread(() -> {
            if (detectFaceResult.getErrCode() == IdCardVerifyError.OK) {
                //預覽人臉特徵提取成功, 若身份證人臉特徵提取也成功,則可調用人證特徵比對接口進行人證比對
            }
        });
    }

    @Override
    public 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 { //人證特徵比對失敗 }網絡

  2. 銷燬引擎,推薦在onDestroy中執行異步

IdCardVerifyManager.getInstance().unInit();

4、注意事項ide

  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進行人證覈驗業務邏輯的實現。 5、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 點喜歡賺鑽最高日賺數百元
相關文章
相關標籤/搜索