人臉實時比對與身份證比對判斷是否是一個人的Android Demo


關於此項目的需求

經常有這種需求,比如住賓館、開證明,銀行卡提款等 要驗證這個人跟身份證是同一個人的需求,我們暫且叫做《人證比對》需求。那么這里一定牽涉到人臉的識別,識別出人臉,然后實時的拿到人臉,再去跟身份證的頭像做比對。比對出一個結果值來,如果這個結果值特別像一個人,那么我們就認為它是一個人。(本文用Android 程序實現)實現身份證與人臉實時比對判斷是否是一個人的Android Demo.

身份證讀卡

第一個就是要讀取到身份證信息。拿到照片數據、身份證數據(比如身份證號碼、年齡、性別、出生年月等)。這個設備就叫做身份證讀卡器(比如 我們這個項目用的是《雲從科技》的機器,集成了身份證讀卡器,實際上是買的華視讀卡器設備(提供了AndroidDemo 我們在這里封裝成了 讀卡器Libarary也叫 讀卡器單獨的module 、或者叫sdk)。

關於此項目的介紹

實現身份證與人臉實時比對判斷是否是一個人的Android Demo

部分代碼展示


可以實現如下效果(實時比對 人臉動態與身份證比對)

部分代碼示意:
比對過程


    private void verifyWithIDcard(FaceInfo face) {
        FeatureBean faceFeature = new FeatureBean(localSDK.iFeaLen);
        faceFeature.ret = FaceRecog.getInstance().cwGetFaceFeature(localSDK.iRecogHandle,
                face.alignedData,
                face.alignedW,
                face.alignedH,
                face.nChannels,
                faceFeature.btFeature);
        FeatureBean idCardFeature = null;
        try {
            idCardFeature = localSDK.GetFeatureFromImgData(getIDBytes());
            VerifyBean mVerifyBean = localSDK.Verify(faceFeature.btFeature, idCardFeature.btFeature);
            if (mVerifyBean.ret == 0) {
                Log.e("========", "相似度:" + mVerifyBean.score);
                boolean isVerifySucess = mVerifyBean.score > AjustPara.JUGE_IS_SAME_PERSON_SCORE;
                verifyResult = isVerifySucess;
                if (isVerifySucess) {
                    EventBus.getDefault().post(new VerifyResult(isVerifySucess));
                }
            } else {
                Log.e("========", "人臉比對錯誤:" + mVerifyBean.ret);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

比對結果演示:


    @Subscribe
    public void onEventMainThread(VerifyResult verifyResult) {
        if (verifyResult != null && verifyResult.isSamePerson()) {
            //截取當前人臉 開始上傳;
            isSamePerson = true;
            //TODO
            SoundTools.playVerifySuccessSound(getContext());
            ivVerifyResult.setImageResource(R.drawable.ic_verify_success);
            ivVerifyResult.setVisibility(View.VISIBLE);
        } else {
            if (isStartMatch) {
                if (isSamePerson) {
                } else {
                    isSamePerson = false;
                    ivVerifyResult.setImageResource(R.drawable.ic_verify_error);
                    ivVerifyResult.setVisibility(View.VISIBLE);
                    SoundTools.playVerifyFailSound(getContext());
                }
            }
        }
        isFaceSameToIdCard = true;
        isStartMatch = false;
        isSamePerson = false;
        ivVerifyResult.setVisibility(View.VISIBLE);
        mHandler.postDelayed(() -> {
            resetVaraAndData();
            ivVerifyResult.setVisibility(View.INVISIBLE);
            PicUploadTask.getInstance().run();
        }, 2 * 1000);

    }
*  實現身份證與人臉實時比對判斷是否是一個人的Android Demo
*  實時讀取人臉信息。(框出人臉)
*  放入身份證 立馬讀出身份證信息(性別、年齡 、身份證號碼等)
*  3秒內判斷 身份證與實時當前實時人臉是不是同一個人
*  可以將身份證信息、比對結果按照要求存儲、數據庫等。
*  按照要求定制APP 和機器信息。

需要此項目的sdk 、Demo或者有類似需求的,更多請:v: lixiaodaoaaa


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM