去掉虹软

This commit is contained in:
guoshengxiong 2025-01-14 14:38:14 +08:00
parent 7b24d7171c
commit 0831e48fec

View File

@ -4,10 +4,6 @@ import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
import com.arcsoft.face.FaceFeature;
import com.arcsoft.face.FaceInfo;
import com.arcsoft.face.FaceSimilar;
import com.arcsoft.face.toolkit.ImageInfo;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.jeecg.common.execption.OpenAlertException;
@ -39,8 +35,6 @@ import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.*;
import static com.arcsoft.face.toolkit.ImageFactory.getRGBData;
import static com.zhgd.xmgl.config.FaceRunner.faceEngine;
/**
* @program: wisdomSite
@ -82,42 +76,42 @@ public class UfaceRecognitionController {
public Result<Map<String, Object>> checkFace(@RequestBody Map<String, Object> map) {
Map<String, Object> data = new HashMap<>(16);
String os = System.getProperty("os.name");
if (Objects.equals(hongruanFacePass, "1")) {
data.put("checkType", "1");
data.put("message", "成功");
return Result.success(data);
}
if (os.toLowerCase().startsWith(WIN) || os.toLowerCase().startsWith(LINUX)) {
String fileUrl = MapUtils.getString(map, "fileUrl");
if (StringUtils.isNotEmpty(fileUrl)) {
File file = minioUtils.downloadFile(fileUrl);
// File file = new File(basePath, fileUrl);
log.info("fileUrl:{}", file.getAbsolutePath());
ImageInfo imageInfo = getRGBData(file);
List<FaceInfo> faceInfoList = new ArrayList<FaceInfo>();
int errorCode = faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList);
log.info("errorCode:{}", errorCode);
if (faceInfoList.size() > 0) {
if (faceInfoList.size() > 1) {
FileOperation.deleteFile(file);
data.put("checkType", "0");
data.put("message", "检测到多张人脸");
} else {
data.put("checkType", "1");
data.put("message", "成功");
}
} else {
FileOperation.deleteFile(file);
data.put("checkType", "0");
data.put("message", "未检测到人脸");
}
log.info("{}", faceInfoList);
} else {
data.put("checkType", "0");
data.put("message", "图片路径不正确");
}
}
// if (Objects.equals(hongruanFacePass, "1")) {
data.put("checkType", "1");
data.put("message", "成功");
return Result.success(data);
// }
// if (os.toLowerCase().startsWith(WIN) || os.toLowerCase().startsWith(LINUX)) {
// String fileUrl = MapUtils.getString(map, "fileUrl");
// if (StringUtils.isNotEmpty(fileUrl)) {
// File file = minioUtils.downloadFile(fileUrl);
//// File file = new File(basePath, fileUrl);
// log.info("fileUrl:{}", file.getAbsolutePath());
// ImageInfo imageInfo = getRGBData(file);
// List<FaceInfo> faceInfoList = new ArrayList<FaceInfo>();
// int errorCode = faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList);
// log.info("errorCode:{}", errorCode);
// if (faceInfoList.size() > 0) {
// if (faceInfoList.size() > 1) {
// FileOperation.deleteFile(file);
// data.put("checkType", "0");
// data.put("message", "检测到多张人脸");
// } else {
// data.put("checkType", "1");
// data.put("message", "成功");
// }
// } else {
// FileOperation.deleteFile(file);
// data.put("checkType", "0");
// data.put("message", "未检测到人脸");
// }
// log.info("{}", faceInfoList);
// } else {
// data.put("checkType", "0");
// data.put("message", "图片路径不正确");
// }
// }
// return Result.success(data);
}
@ApiOperation(value = "海康检测人脸评分", notes = "海康检测人脸评分", httpMethod = "POST")
@ -185,72 +179,74 @@ public class UfaceRecognitionController {
@PostMapping(value = "/faceComparison")
public Result<String> faceComparison(@RequestBody Map<String, Object> map) {
Result<String> result = new Result<String>();
try {
String os = System.getProperty("os.name");
if (os.toLowerCase().startsWith(WIN)) {
String fileUrl = MapUtils.getString(map, "fileUrl");
File file = minioUtils.downloadFile(fileUrl);
// File file = new File(basePath + "/" + fileUrl);
//人脸检测
ImageInfo imageInfo = getRGBData(file);
List<FaceInfo> faceInfoList = new ArrayList<FaceInfo>();
int errorCode = faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList);
if (faceInfoList == null || faceInfoList.size() == 0) {
FileOperation.deleteFile(file);
throw new OpenAlertException(MessageUtil.get("faceNotNumErr"));
} else if (faceInfoList.size() > 1) {
FileOperation.deleteFile(file);
throw new OpenAlertException(MessageUtil.get("faceMultipleNumErr"));
}
//特征提取
FaceFeature faceFeature = new FaceFeature();
errorCode = faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList.get(0), faceFeature);
log.info("特征值大小:" + faceFeature.getFeatureData().length);
WorkerInfo info = workerInfoService.getById(MapUtils.getString(map, "workerId"));
//人脸检测2
ImageInfo imageInfo2 = getRGBData(minioUtils.downloadFile(info.getFieldAcquisitionUrl()));
// ImageInfo imageInfo2 = getRGBData(new File(basePath + "/" + info.getFieldAcquisitionUrl()));
List<FaceInfo> faceInfoList2 = new ArrayList<FaceInfo>();
errorCode = faceEngine.detectFaces(imageInfo2.getImageData(), imageInfo2.getWidth(), imageInfo2.getHeight(), imageInfo.getImageFormat(), faceInfoList2);
log.info("{}", faceInfoList);
if (faceInfoList2 == null || faceInfoList2.size() == 0) {
FileOperation.deleteFile(file);
throw new OpenAlertException(MessageUtil.get("faceMismatchErr"));
}
//特征提取2
FaceFeature faceFeature2 = new FaceFeature();
errorCode = faceEngine.extractFaceFeature(imageInfo2.getImageData(), imageInfo2.getWidth(), imageInfo2.getHeight(), imageInfo.getImageFormat(), faceInfoList2.get(0), faceFeature2);
log.info("特征值大小:" + faceFeature2.getFeatureData().length);
//特征比对
FaceFeature targetFaceFeature = new FaceFeature();
targetFaceFeature.setFeatureData(faceFeature.getFeatureData());
FaceFeature sourceFaceFeature = new FaceFeature();
sourceFaceFeature.setFeatureData(faceFeature2.getFeatureData());
FaceSimilar faceSimilar = new FaceSimilar();
errorCode = faceEngine.compareFaceFeature(targetFaceFeature, sourceFaceFeature, faceSimilar);
log.info("相似度:" + faceSimilar.getScore());
Integer score = MapUtils.getInteger(map, "faceScore");
int abc = Double.valueOf(faceSimilar.getScore() * 100).intValue();
if (abc >= score) {
result.successMsg(MessageUtil.get("optSucess"));
} else {
FileOperation.deleteFile(file);
throw new OpenAlertException(MessageUtil.get("faceMismatchErr"));
}
} else {
log.info("当前操作系统不是window系统");
result.successMsg(MessageUtil.get("optSucess"));
}
} catch (OpenAlertException e) {
//log.error("error",e);
result.error500(e.getMessage());
} catch (Exception e) {
log.error("error", e);
log.info(e.getMessage());
result.error500(MessageUtil.get("failErr"));
}
result.successMsg(MessageUtil.get("optSucess"));
return result;
// try {
// String os = System.getProperty("os.name");
// if (os.toLowerCase().startsWith(WIN)) {
// String fileUrl = MapUtils.getString(map, "fileUrl");
// File file = minioUtils.downloadFile(fileUrl);
//// File file = new File(basePath + "/" + fileUrl);
// //人脸检测
// ImageInfo imageInfo = getRGBData(file);
// List<FaceInfo> faceInfoList = new ArrayList<FaceInfo>();
// int errorCode = faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList);
// if (faceInfoList == null || faceInfoList.size() == 0) {
// FileOperation.deleteFile(file);
// throw new OpenAlertException(MessageUtil.get("faceNotNumErr"));
// } else if (faceInfoList.size() > 1) {
// FileOperation.deleteFile(file);
// throw new OpenAlertException(MessageUtil.get("faceMultipleNumErr"));
// }
// //特征提取
// FaceFeature faceFeature = new FaceFeature();
// errorCode = faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList.get(0), faceFeature);
// log.info("特征值大小:" + faceFeature.getFeatureData().length);
// WorkerInfo info = workerInfoService.getById(MapUtils.getString(map, "workerId"));
// //人脸检测2
// ImageInfo imageInfo2 = getRGBData(minioUtils.downloadFile(info.getFieldAcquisitionUrl()));
//// ImageInfo imageInfo2 = getRGBData(new File(basePath + "/" + info.getFieldAcquisitionUrl()));
// List<FaceInfo> faceInfoList2 = new ArrayList<FaceInfo>();
// errorCode = faceEngine.detectFaces(imageInfo2.getImageData(), imageInfo2.getWidth(), imageInfo2.getHeight(), imageInfo.getImageFormat(), faceInfoList2);
// log.info("{}", faceInfoList);
//
// if (faceInfoList2 == null || faceInfoList2.size() == 0) {
// FileOperation.deleteFile(file);
// throw new OpenAlertException(MessageUtil.get("faceMismatchErr"));
// }
// //特征提取2
// FaceFeature faceFeature2 = new FaceFeature();
// errorCode = faceEngine.extractFaceFeature(imageInfo2.getImageData(), imageInfo2.getWidth(), imageInfo2.getHeight(), imageInfo.getImageFormat(), faceInfoList2.get(0), faceFeature2);
// log.info("特征值大小:" + faceFeature2.getFeatureData().length);
// //特征比对
// FaceFeature targetFaceFeature = new FaceFeature();
// targetFaceFeature.setFeatureData(faceFeature.getFeatureData());
// FaceFeature sourceFaceFeature = new FaceFeature();
// sourceFaceFeature.setFeatureData(faceFeature2.getFeatureData());
// FaceSimilar faceSimilar = new FaceSimilar();
//
// errorCode = faceEngine.compareFaceFeature(targetFaceFeature, sourceFaceFeature, faceSimilar);
// log.info("相似度:" + faceSimilar.getScore());
// Integer score = MapUtils.getInteger(map, "faceScore");
// int abc = Double.valueOf(faceSimilar.getScore() * 100).intValue();
// if (abc >= score) {
// result.successMsg(MessageUtil.get("optSucess"));
// } else {
// FileOperation.deleteFile(file);
// throw new OpenAlertException(MessageUtil.get("faceMismatchErr"));
// }
// } else {
// log.info("当前操作系统不是window系统");
// result.successMsg(MessageUtil.get("optSucess"));
// }
// } catch (OpenAlertException e) {
// //log.error("error",e);
// result.error500(e.getMessage());
// } catch (Exception e) {
// log.error("error", e);
// log.info(e.getMessage());
// result.error500(MessageUtil.get("failErr"));
// }
// return result;
}
}