關於此項目的需求
經常有這種需求,比如住賓館、開證明,銀行卡提款等 要驗證這個人跟身份證是同一個人的需求,我們暫且叫做《人證比對》需求。那么這里一定牽涉到人臉的識別,識別出人臉,然后實時的拿到人臉,再去跟身份證的頭像做比對。比對出一個結果值來,如果這個結果值特別像一個人,那么我們就認為它是一個人。(本文用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