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