package com.basic.security.manager;
|
|
import com.basic.security.manager.impl.cblite.BusinessPersonManager;
|
import com.basic.security.utils.Constants;
|
import com.basic.security.utils.FaceId;
|
import com.basic.security.utils.FacePosition;
|
import com.basic.security.utils.FaceTitleAndTips;
|
import com.basic.security.utils.MutableDocumentUtil;
|
|
public class FacePositionManager {
|
|
static FaceTitleAndTips lastCompareFeatureResult;
|
static long lastCompareFeatureResultTime;
|
|
public static void processFaceFeature(FacePosition facePosition) {
|
try {
|
FaceTitleAndTips compareFeatureResult = new FaceTitleAndTips();
|
compareFeatureResult.facePosition = facePosition;
|
facePosition.compareFeatureResult = compareFeatureResult;
|
if (facePosition.featureData != null) {
|
// 当前人脸和底库中已有的人脸对比
|
long beginTime = System.currentTimeMillis();
|
// String compareResultStr = FaceId.instance.compareFeatureInDb(facePosition.featureData, Constants.minRecognizeScoe);
|
String compareResultStr = FaceId.instance.compareFeatureInDb(facePosition.featureData, 65);
|
long compareFeatureTime = System.currentTimeMillis();
|
compareFeatureResult.personId = compareResultStr.split(",", -1)[0];
|
// System.out.println("faceInDbPersonId = " + compareFeatureResult.personId);
|
compareFeatureResult.score = Float.parseFloat(compareResultStr.split(",", -1)[1]);
|
// System.out.println("faceInDbScore = " + compareFeatureResult.score);
|
compareFeatureResult.detectTime = facePosition.createTime;
|
compareFeatureResult.faceFeature = facePosition.featureData;
|
compareFeatureResult.trackerId = facePosition.trackerId;
|
compareFeatureResult.compareFeatureTime = compareFeatureTime;
|
compareFeatureResult.consumTime = compareFeatureTime - beginTime;
|
Constants.compareFeatureTime = beginTime;
|
Constants.score = Float.parseFloat(compareResultStr.split(",", -1)[1]);
|
if (lastCompareFeatureResult != null
|
&& compareFeatureResult.personId.equals(lastCompareFeatureResult.personId)
|
&& (System.currentTimeMillis() - lastCompareFeatureResultTime) < 3000) {
|
compareFeatureResult.person = lastCompareFeatureResult.person;
|
compareFeatureResult.identityNameList = lastCompareFeatureResult.identityNameList;
|
compareFeatureResult.signUpRuleName = lastCompareFeatureResult.signUpRuleName;
|
compareFeatureResult.validSignUpRuleList = lastCompareFeatureResult.validSignUpRuleList;
|
compareFeatureResult.validSignUpRuleListButTimeNotReach = lastCompareFeatureResult.validSignUpRuleListButTimeNotReach;
|
compareFeatureResult.validBusinessRuleList = lastCompareFeatureResult.validBusinessRuleList;
|
compareFeatureResult.validBusinessRuleListButTimeNotReach = lastCompareFeatureResult.validBusinessRuleListButTimeNotReach;
|
// compareFeatureResult.validDeviceRuleList = lastCompareFeatureResult.validDeviceRuleList;
|
} else {
|
compareFeatureResult.person = PersonManager.findPersonById(compareFeatureResult.personId);
|
if (compareFeatureResult.person != null) {
|
compareFeatureResult.identityNameList = IdentityManager.findIdentityNameListByPersonId(compareFeatureResult.personId);
|
compareFeatureResult.signUpRuleName = MutableDocumentUtil.getString(compareFeatureResult.person, "sign_up_rule");
|
compareFeatureResult.validSignUpRuleList = PersonManager.getValidSignUpRuleList(compareFeatureResult.person);
|
compareFeatureResult.validSignUpRuleListButTimeNotReach = PersonManager.getValidSignUpRuleListButTimeNotReach(compareFeatureResult.person);
|
compareFeatureResult.validBusinessRuleList = BusinessPersonManager.getPersonInValidBusinessList(compareFeatureResult.personId);
|
compareFeatureResult.validBusinessRuleListButTimeNotReach = BusinessPersonManager.getValidBusinessRuleListButTimeNotReach(compareFeatureResult.personId);
|
// compareFeatureResult.validDeviceRuleList = TimeRuleManager.getValidDeviceRuleList();
|
lastCompareFeatureResult = compareFeatureResult;
|
lastCompareFeatureResultTime = System.currentTimeMillis();
|
} else {
|
compareFeatureResult.personId = null;
|
}
|
|
}
|
} else {
|
facePosition.compareFeatureResult.personId = "";
|
}
|
CompareFeatureResultManager.addCompareFeatureResult(facePosition);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
}
|