liuxiaolong
2019-05-06 573d1e33a32da5c55c638df2ee622d972976c1d0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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;
    }
}