简单比对照片是否相同_人脸实时比对与身份证比对判断是否是一个人的Android Demo...

关于此项目的需求

经常有这种需求,比如住宾馆、开证明,银行卡提款等 要验证这个人跟身份证是同一个人的需求,我们暂且叫做《人证比对》需求。那么这里一定牵涉到人脸的识别,识别出人脸,然后实时的拿到人脸,再去跟身份证的头像做比对。比对出一个结果值来,如果这个结果值特别像一个人,那么我们就认为它是一个人。(本文用Android 程序实现)实现身份证与人脸实时比对判断是否是一个人的Android Demo.

5e143ded0ce505b73110cd964df9b60d.png

身份证读卡

第一个就是要读取到身份证信息。拿到照片数据、身份证数据(比如身份证号码、年龄、性别、出生年月等)。这个设备就叫做身份证读卡器(比如 我们这个项目用的是《云从科技》的机器,集成了身份证读卡器,实际上是买的华视读卡器设备(提供了AndroidDemo 我们在这里封装成了 读卡器Libarary也叫 读卡器单独的module 、或者叫sdk)

关于此项目的介绍

实现身份证与人脸实时比对判断是否是一个人的Android Demo

fae42c569c5e76671076a2e72963e48b.png

项目Demo截图

032546c632456d76117062219c84a42a.png

6350b6cb773fbdd0bf920fa7dac68b34.png

可以实现如下效果(实时比对 人脸动态与身份证比对)

7f2c774307231acd0bb5e9e32f7430fc.png

部分代码示意:

比对过程

 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值