zoukankan      html  css  js  c++  java
  • 人脸实时比对与身份证比对判断是否是一个人的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

  • 相关阅读:
    Spark的Java API例子详解
    idea 创建scala maven工程
    Hbase 创建表 插入数据Hb
    zookeeper.ClientCnxn: Opening socket connection to server CDH03/192.168.121.147:2181. Will not attem
    null, message from server: "Host 'CDH01' is not allowed to connect to this MySQL server
    虚拟机设置静态网络
    linux无密访问
    Hbase启动出问题 master.HMaster: Failed to become active master
    简单的深度优先例子
    常用git操作命令
  • 原文地址:https://www.cnblogs.com/lixiaodaoaaa/p/11421218.html
Copyright © 2011-2022 走看看