人脸实时比对与身份证比对判断是否是一个人的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