Blame view

src/main/java/com/objecteye/utils/FaceUtils.java 4.83 KB
c83b5b39   Liu Haoyu   项目创建, 集成spring-se...
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
  package com.objecteye.utils;
  
  import com.alibaba.fastjson.JSONArray;
  import com.alibaba.fastjson.JSONObject;
  import com.objecteye.pojo.FaceInfoParam;
  import com.objecteye.pojo.FacePosition;
  import org.springframework.stereotype.Component;
  
  /**
   * 人的工具类
   */
  @Component
  public class FaceUtils {
  
      //封装Human类
      public FaceInfoParam rabbitToFaceInfo(JSONObject VehicleFaceJson, String id) {
          FaceInfoParam faceInfoParam = new FaceInfoParam();
  
  //        JSONObject VehicleFaceJson = JSONObject.parseObject(rabbitInfo);
          JSONObject faceJson = VehicleFaceJson.containsKey("faceInfoParam") ? VehicleFaceJson.getJSONObject("faceInfoParam") : null;
          if (faceJson != null) {
  //            String id;    //人像id
  //            faceInfoParam.setId(id);//因为从图片中提取到的人像没有id
  
  //            String mattingData;   //抠图的base64
              String mattingData = faceJson.containsKey("mattingData") ? faceJson.getString("mattingData") : null;
              faceInfoParam.setMattingData(mattingData);
  
              JSONObject faceDetectInfoParam = faceJson.containsKey("faceDetectInfoParam") ? faceJson.getJSONObject("faceDetectInfoParam") : null;
              if (faceDetectInfoParam != null) {
                  // FacePosition facePosition;  //脸部位置
                  JSONObject face_position = faceDetectInfoParam.containsKey("face_position") ? faceDetectInfoParam.getJSONObject("face_position") : null;
                  FacePosition facePosition = null;
                  if (face_position != null) {
                      facePosition = new FacePosition();
                      facePosition.setLeft(face_position.containsKey("left") ? face_position.getInteger("left") : null);
                      facePosition.setTop(face_position.containsKey("top") ? face_position.getInteger("top") : null);
                      facePosition.setWidth(face_position.containsKey("width") ? face_position.getInteger("width") : null);
                      facePosition.setHeigth(face_position.containsKey("height") ? face_position.getInteger("height") : null);
                  }
                  faceInfoParam.setFacePosition(facePosition);
  
  //            float facePosScore; //人脸框置信度
                  float face_pos_score = faceDetectInfoParam.containsKey("face_pos_score") ? faceDetectInfoParam.getFloat("face_pos_score") : 0L;
                  faceInfoParam.setFacePosScore(face_pos_score);
  
  //            Integer quality; //质量评价
                  int quality = faceDetectInfoParam.containsKey("quality") ? faceDetectInfoParam.getInteger("quality") : 0;
                  faceInfoParam.setQuality(quality);
  
  //            Integer  clarity;   //清晰度 0 - 100
                  int clarity = faceDetectInfoParam.containsKey("clarity") ? faceDetectInfoParam.getInteger("clarity") : 0;
                  faceInfoParam.setClarity(clarity);
  
  //            Integer brightness; //亮度 0 - 255
                  int brightness = faceDetectInfoParam.containsKey("brightness") ? faceDetectInfoParam.getInteger("brightness") : 0;
                  faceInfoParam.setBrightness(brightness);
  
  //            float roll; //姿态角--float
                  float roll = faceDetectInfoParam.containsKey("roll") ? faceDetectInfoParam.getFloat("roll") : 0L;
                  faceInfoParam.setRoll(roll);
  
  //            float yaw;  //姿态角--float
                  float yaw = faceDetectInfoParam.containsKey("yaw") ? faceDetectInfoParam.getFloat("yaw") : 0L;
                  faceInfoParam.setYaw(yaw);
  
  //            float pitch;    //姿态角--float
                  float pitch = faceDetectInfoParam.containsKey("pitch") ? faceDetectInfoParam.getFloat("pitch") : 0L;
                  faceInfoParam.setPitch(pitch);
  
  //            float score; //人脸置信度-float
                  float score = faceDetectInfoParam.containsKey("score") ? faceDetectInfoParam.getFloat("score") : 0L;
                  faceInfoParam.setScore(score);
              }
  
              // float[] fea;  //人脸特征值 512位
              JSONArray feaJsonArr = faceJson.containsKey("fea") ? faceJson.getJSONArray("fea") : null;
              float[] fea = null;
              if (feaJsonArr != null && feaJsonArr.size() == 512) {
                  fea = new float[512];
                  for (int i = 0; i < 512; i++) {
                      fea[i] = feaJsonArr.getFloat(i);
                  }
              }
              faceInfoParam.setFea(fea);
  
  //            String retrieveKey;		//1vN检索key值
              String retrieveKey = faceJson.containsKey("retrieveKey") ? faceJson.getString("retrieveKey") : null;
              faceInfoParam.setRetrieveKey(retrieveKey);
  
              System.out.println("==================");
  
  //            Integer label; //聚类下标
              int label = faceJson.containsKey("label") ? faceJson.getInteger("label") : 0;
              faceInfoParam.setLabel(label);
          }
          return faceInfoParam;
      }
  
  }