package com.basic.security.utils; import com.basic.security.manager.impl.cblite.BaseSettingManager; import com.basic.security.manager.impl.cblite.HintRecognizeManager; import java.io.Serializable; public class FacePosition implements Serializable { public int x1; public int y1; public int x2; public int y2; public int yaw; // 左右角度 public int pitch; // public int roll; // public float score; public byte[] faceJpgData; public long trackerId; public boolean liveness; public String featureName; public byte[] featureData; public long createTime; public boolean allowPass; public String allowPassIdentityName; public double faceRatio; public FaceTitleAndTips compareFeatureResult; public boolean detectScoreCanRecognize() { // 已注册人员是否识别出来 return featureData != null && score >= 0.80; } public boolean detectScoreCanSignUp() { // 得分是否可以注册 if (Constants.isNewIDCardReader){ return haveFaceAngleHintForSignUp() == null && score >= 0.80; } return haveFaceAngleHintForSignUp() == null && score >= 0.95; } public void readFaceFeature() { try { if (featureName != null && !"".equals(featureName)) { featureData = FileUtil.readFile1(featureName); } } catch (Exception e) { e.printStackTrace(); } } public String haveFaceAngleHintForSignUp() { String haveFaceAngleHint = null; try { // BaseSettingManager.getFaceRatio() 根据设置的屏幕比,让人脸在设置的屏幕比+_0.2浮动 if (faceRatio > Double.parseDouble(BaseSettingManager.getFaceRatio()) + 0.2) { // haveFaceAngleHint = HintRecognizeManager.getFaceMaxAngleMessage(); haveFaceAngleHint = "向后站"; } else if (faceRatio < Double.parseDouble(BaseSettingManager.getFaceRatio()) - 0.2) { // haveFaceAngleHint = HintRecognizeManager.getFaceMinAngleMessage(); haveFaceAngleHint = "向前站"; } else if (yaw > HintRecognizeManager.getRightRotationAngle()) { // haveFaceAngleHint = HintRecognizeManager.getRightRotationMessage(); } else if (yaw < HintRecognizeManager.getLeftRotationAngle()) { haveFaceAngleHint = HintRecognizeManager.getLeftRotationMessage(); } else if (pitch > HintRecognizeManager.getHeadDownAngle()) { // haveFaceAngleHint = HintRecognizeManager.getHeadUpAngleMessage(); } else if (pitch < HintRecognizeManager.getHeadUpAngle()) { haveFaceAngleHint = HintRecognizeManager.getHeadDownAngleMessage(); } else if (roll > 10) { haveFaceAngleHint = "请正脸对准摄像头"; } else if (roll < -10) { haveFaceAngleHint = "请正脸对准摄像头"; } } catch (Exception e) { e.printStackTrace(); } return haveFaceAngleHint; } }