diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/controller/UfaceRecognitionController.java b/src/main/java/com/zhgd/xmgl/modules/worker/controller/UfaceRecognitionController.java index bac748138..83970ee71 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/controller/UfaceRecognitionController.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/controller/UfaceRecognitionController.java @@ -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> checkFace(@RequestBody Map map) { Map 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 faceInfoList = new ArrayList(); - 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 faceInfoList = new ArrayList(); +// 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 faceComparison(@RequestBody Map map) { Result result = new 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 faceInfoList = new ArrayList(); - 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 faceInfoList2 = new ArrayList(); - 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 faceInfoList = new ArrayList(); +// 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 faceInfoList2 = new ArrayList(); +// 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; } }