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(); } } }