From 929c1bf3d3321cf5da4631167221d6dc49b87b31 Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Fri, 10 Jan 2025 22:32:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=85=E5=A4=B4=E5=8E=BB=E6=8E=89=E8=99=B9?= =?UTF-8?q?=E8=BD=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 14 +- .../java/com/zhgd/xmgl/config/FaceRunner.java | 184 ++++++++-------- .../UfaceRecognitionController.java | 208 +++++++++--------- .../impl/WorkerAttendanceServiceImpl.java | 68 +++--- .../impl/WorkerImageLibraryServiceImpl.java | 79 +++---- .../impl/WorkerPhotoFeaturesServiceImpl.java | 37 ++-- 6 files changed, 294 insertions(+), 296 deletions(-) diff --git a/pom.xml b/pom.xml index af2914870..3dee2ba2c 100644 --- a/pom.xml +++ b/pom.xml @@ -790,13 +790,13 @@ - - com.arcsoft.face - arcsoft - 1.0 - system - ${basedir}/src/main/resources/jar/arcsoft-sdk-face-3.0.0.0.jar - + + + + + + + com.google.zxing core diff --git a/src/main/java/com/zhgd/xmgl/config/FaceRunner.java b/src/main/java/com/zhgd/xmgl/config/FaceRunner.java index 2862dba8d..bd04d4cef 100644 --- a/src/main/java/com/zhgd/xmgl/config/FaceRunner.java +++ b/src/main/java/com/zhgd/xmgl/config/FaceRunner.java @@ -1,92 +1,92 @@ -package com.zhgd.xmgl.config; - -import com.arcsoft.face.ActiveFileInfo; -import com.arcsoft.face.EngineConfiguration; -import com.arcsoft.face.FaceEngine; -import com.arcsoft.face.FunctionConfiguration; -import com.arcsoft.face.enums.DetectMode; -import com.arcsoft.face.enums.DetectOrient; -import com.arcsoft.face.enums.ErrorInfo; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.CommandLineRunner; -import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Component; - -/** - * @program: wisdomSite - * @description: 虹软人脸识别插件初始化 - * @author: Mr.Peng - * @create: 2021-04-08 10:18 - **/ - -@Component -@Order(value = 2) -@Slf4j -public class FaceRunner implements CommandLineRunner { - - public static FaceEngine faceEngine; - @Value("${arcsoft.appId}") - private String appId; - @Value("${arcsoft.sdkKey}") - private String winsSdkKey; - @Value("${arcsoft.linux.sdkKey}") - private String linuxSdkKey; - @Value("${arcsoft.dllPath}") - private String dllPath; - - - @Override - public void run(String... args) throws Exception { - String os = System.getProperty("os.name"); - log.info("服务器系统" + os); - //如果是Windows系统 - if (os.toLowerCase().startsWith("win") || os.toLowerCase().startsWith("linux")) { - String sdkKey = ""; - if (os.toLowerCase().startsWith("linux")) { - sdkKey = linuxSdkKey; - } else { - sdkKey = winsSdkKey; - } - //log.info(HCNetSDKPath.DLL_PATH+"dll"); - log.info(dllPath); - faceEngine = new FaceEngine(dllPath); - //激活引擎 - int errorCode = faceEngine.activeOnline(appId, sdkKey); - - if (errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()) { - log.error("引擎激活失败,errorCode:" + errorCode); - } - - - ActiveFileInfo activeFileInfo = new ActiveFileInfo(); - errorCode = faceEngine.getActiveFileInfo(activeFileInfo); - if (errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()) { - log.error("获取激活文件信息失败"); - } - - //引擎配置 - EngineConfiguration engineConfiguration = new EngineConfiguration(); - engineConfiguration.setDetectMode(DetectMode.ASF_DETECT_MODE_IMAGE); - engineConfiguration.setDetectFaceOrientPriority(DetectOrient.ASF_OP_ALL_OUT); - engineConfiguration.setDetectFaceMaxNum(10); - engineConfiguration.setDetectFaceScaleVal(16); - //功能配置 - FunctionConfiguration functionConfiguration = new FunctionConfiguration(); - functionConfiguration.setSupportAge(true); - functionConfiguration.setSupportFace3dAngle(true); - functionConfiguration.setSupportFaceDetect(true); - functionConfiguration.setSupportFaceRecognition(true); - functionConfiguration.setSupportGender(true); - functionConfiguration.setSupportLiveness(true); - functionConfiguration.setSupportIRLiveness(true); - engineConfiguration.setFunctionConfiguration(functionConfiguration); - //初始化引擎 - errorCode = faceEngine.init(engineConfiguration); - - if (errorCode != ErrorInfo.MOK.getValue()) { - log.error("初始化引擎失败"); - } - } - } -} +//package com.zhgd.xmgl.config; +// +//import com.arcsoft.face.ActiveFileInfo; +//import com.arcsoft.face.EngineConfiguration; +//import com.arcsoft.face.FaceEngine; +//import com.arcsoft.face.FunctionConfiguration; +//import com.arcsoft.face.enums.DetectMode; +//import com.arcsoft.face.enums.DetectOrient; +//import com.arcsoft.face.enums.ErrorInfo; +//import lombok.extern.slf4j.Slf4j; +//import org.springframework.beans.factory.annotation.Value; +//import org.springframework.boot.CommandLineRunner; +//import org.springframework.core.annotation.Order; +//import org.springframework.stereotype.Component; +// +///** +// * @program: wisdomSite +// * @description: 虹软人脸识别插件初始化 +// * @author: Mr.Peng +// * @create: 2021-04-08 10:18 +// **/ +// +//@Component +//@Order(value = 2) +//@Slf4j +//public class FaceRunner implements CommandLineRunner { +// +// public static FaceEngine faceEngine; +// @Value("${arcsoft.appId}") +// private String appId; +// @Value("${arcsoft.sdkKey}") +// private String winsSdkKey; +// @Value("${arcsoft.linux.sdkKey}") +// private String linuxSdkKey; +// @Value("${arcsoft.dllPath}") +// private String dllPath; +// +// +// @Override +// public void run(String... args) throws Exception { +// String os = System.getProperty("os.name"); +// log.info("服务器系统" + os); +// //如果是Windows系统 +// if (os.toLowerCase().startsWith("win") || os.toLowerCase().startsWith("linux")) { +// String sdkKey = ""; +// if (os.toLowerCase().startsWith("linux")) { +// sdkKey = linuxSdkKey; +// } else { +// sdkKey = winsSdkKey; +// } +// //log.info(HCNetSDKPath.DLL_PATH+"dll"); +// log.info(dllPath); +// faceEngine = new FaceEngine(dllPath); +// //激活引擎 +// int errorCode = faceEngine.activeOnline(appId, sdkKey); +// +// if (errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()) { +// log.error("引擎激活失败,errorCode:" + errorCode); +// } +// +// +// ActiveFileInfo activeFileInfo = new ActiveFileInfo(); +// errorCode = faceEngine.getActiveFileInfo(activeFileInfo); +// if (errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()) { +// log.error("获取激活文件信息失败"); +// } +// +// //引擎配置 +// EngineConfiguration engineConfiguration = new EngineConfiguration(); +// engineConfiguration.setDetectMode(DetectMode.ASF_DETECT_MODE_IMAGE); +// engineConfiguration.setDetectFaceOrientPriority(DetectOrient.ASF_OP_ALL_OUT); +// engineConfiguration.setDetectFaceMaxNum(10); +// engineConfiguration.setDetectFaceScaleVal(16); +// //功能配置 +// FunctionConfiguration functionConfiguration = new FunctionConfiguration(); +// functionConfiguration.setSupportAge(true); +// functionConfiguration.setSupportFace3dAngle(true); +// functionConfiguration.setSupportFaceDetect(true); +// functionConfiguration.setSupportFaceRecognition(true); +// functionConfiguration.setSupportGender(true); +// functionConfiguration.setSupportLiveness(true); +// functionConfiguration.setSupportIRLiveness(true); +// engineConfiguration.setFunctionConfiguration(functionConfiguration); +// //初始化引擎 +// errorCode = faceEngine.init(engineConfiguration); +// +// if (errorCode != ErrorInfo.MOK.getValue()) { +// log.error("初始化引擎失败"); +// } +// } +// } +//} 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 a9bc5c02f..582287c25 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 @@ -2,10 +2,6 @@ package com.zhgd.xmgl.modules.worker.controller; import cn.hutool.core.util.StrUtil; 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; @@ -26,7 +22,6 @@ import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.MapUtils; -import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.PostMapping; @@ -37,8 +32,8 @@ import org.springframework.web.bind.annotation.RestController; import java.io.File; import java.util.*; -import static com.arcsoft.face.toolkit.ImageFactory.getRGBData; -import static com.zhgd.xmgl.config.FaceRunner.faceEngine; +//import static com.arcsoft.face.toolkit.ImageFactory.getRGBData; +//import static com.zhgd.xmgl.config.FaceRunner.faceEngine; /** * @program: wisdomSite @@ -77,41 +72,41 @@ 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 = new File(basePath, fileUrl); - log.info("basePath:{},fileUrl:{}", basePath, fileUrl); - 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 = new File(basePath, fileUrl); +// log.info("basePath:{},fileUrl:{}", basePath, fileUrl); +// 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") @@ -177,70 +172,71 @@ 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 = 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(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; + return result.successMsg(MessageUtil.get("optSucess")); +// try { +// String os = System.getProperty("os.name"); +// if (os.toLowerCase().startsWith(WIN)) { +// String fileUrl = MapUtils.getString(map, "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(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; } } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerAttendanceServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerAttendanceServiceImpl.java index 9a7d0ba76..c28898122 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerAttendanceServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerAttendanceServiceImpl.java @@ -8,10 +8,10 @@ import cn.hutool.core.io.FileUtil; import cn.xuyanwu.spring.file.storage.FileInfo; import com.alibaba.fastjson.JSON; 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.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.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -58,8 +58,8 @@ import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; -import static com.arcsoft.face.toolkit.ImageFactory.getRGBData; -import static com.zhgd.xmgl.config.FaceRunner.faceEngine; +//import static com.arcsoft.face.toolkit.ImageFactory.getRGBData; +//import static com.zhgd.xmgl.config.FaceRunner.faceEngine; /** * @Description: 人员考勤 @@ -1283,14 +1283,14 @@ status 状态码 String 1表示成功;其余表示失败 file = Base64Util.convertBase64ToFile(personImage, basePath, UUID.randomUUID().toString() + ".jpg"); log.info("--图片--:" + file.getAbsolutePath() + "--名称--" + file.getName()); if (file != null) { - FaceFeature oldFaceFeature = getFaceFeaByhongruan(file); +// FaceFeature oldFaceFeature = getFaceFeaByhongruan(file); List tempList = new ArrayList<>(); for (WorkerInfo workerInfo : list) { - int faceScore = getFaceSorce(workerInfo, oldFaceFeature); - if (faceScore >= ufaceSorce) { - workerInfo.setFaceScore(faceScore); - tempList.add(workerInfo); - } +// int faceScore = getFaceSorce(workerInfo, oldFaceFeature); +// if (faceScore >= ufaceSorce) { +// workerInfo.setFaceScore(faceScore); +// tempList.add(workerInfo); +// } } Collections.sort(tempList, new Comparator() { @Override @@ -1323,18 +1323,18 @@ status 状态码 String 1表示成功;其余表示失败 return info; } - public int getFaceSorce(WorkerInfo workerInfo, FaceFeature oldFaceFeature) { - if (workerInfo != null && workerInfo.getFeahongruan() != null) { - FaceFeature infoFaceFeature = new FaceFeature(); - infoFaceFeature.setFeatureData(workerInfo.getFeahongruan()); - FaceSimilar faceSimilar = new FaceSimilar(); - faceEngine.compareFaceFeature(oldFaceFeature, infoFaceFeature, faceSimilar); - int faceScore = Double.valueOf(faceSimilar.getScore() * 100).intValue(); - return faceScore; - } else { - return 0; - } - } +// public int getFaceSorce(WorkerInfo workerInfo, FaceFeature oldFaceFeature) { +// if (workerInfo != null && workerInfo.getFeahongruan() != null) { +// FaceFeature infoFaceFeature = new FaceFeature(); +// infoFaceFeature.setFeatureData(workerInfo.getFeahongruan()); +// FaceSimilar faceSimilar = new FaceSimilar(); +// faceEngine.compareFaceFeature(oldFaceFeature, infoFaceFeature, faceSimilar); +// int faceScore = Double.valueOf(faceSimilar.getScore() * 100).intValue(); +// return faceScore; +// } else { +// return 0; +// } +// } /** * 虹软获取特征值 @@ -1342,15 +1342,15 @@ status 状态码 String 1表示成功;其余表示失败 * @param * @return */ - public FaceFeature getFaceFeaByhongruan(File file) { - ImageInfo imageInfo = getRGBData(file); - List faceInfoList = new ArrayList(); - faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList); - FaceFeature faceFeature = new FaceFeature(); - if (faceInfoList.size() > 0) { - faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList.get(0), faceFeature); - } - return faceFeature; - } +// public FaceFeature getFaceFeaByhongruan(File file) { +// ImageInfo imageInfo = getRGBData(file); +// List faceInfoList = new ArrayList(); +// faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList); +// FaceFeature faceFeature = new FaceFeature(); +// if (faceInfoList.size() > 0) { +// faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList.get(0), faceFeature); +// } +// return faceFeature; +// } } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerImageLibraryServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerImageLibraryServiceImpl.java index 322bfcea0..13407f460 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerImageLibraryServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerImageLibraryServiceImpl.java @@ -1,10 +1,11 @@ package com.zhgd.xmgl.modules.worker.service.impl; -import com.arcsoft.face.FaceFeature; -import com.arcsoft.face.FaceInfo; -import com.arcsoft.face.FaceSimilar; -import com.arcsoft.face.toolkit.ImageInfo; +//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.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhgd.xmgl.modules.basicdata.service.UploadFileService; @@ -23,13 +24,13 @@ import org.springframework.transaction.annotation.Transactional; import java.io.File; import java.util.*; -import static com.arcsoft.face.toolkit.ImageFactory.getRGBData; -import static com.zhgd.xmgl.config.FaceRunner.faceEngine; +//import static com.arcsoft.face.toolkit.ImageFactory.getRGBData; +//import static com.zhgd.xmgl.config.FaceRunner.faceEngine; /** * @Description: 人员照片库 * @author: pds - * @date: 2021-09-23 + * @date: 2021-09-23 * @version: V1.0 */ @Service @@ -73,7 +74,7 @@ public class WorkerImageLibraryServiceImpl extends ServiceImpl tempList=new ArrayList<>(); if(file!=null){ - FaceFeature oldFaceFeature=getFaceFeaByhongruan(file); +// FaceFeature oldFaceFeature=getFaceFeaByhongruan(file); - for(WorkerImageLibrary workerInfo:list){ - int faceScore=getFaceSorce(workerInfo,oldFaceFeature); - if(faceScore>=60){ - workerInfo.setFaceScore(faceScore); - tempList.add(workerInfo); - } - } - Collections.sort(tempList , new Comparator() { +// for(WorkerImageLibrary workerInfo:list){ +// int faceScore=getFaceSorce(workerInfo,oldFaceFeature); +// if(faceScore>=60){ +// workerInfo.setFaceScore(faceScore); +// tempList.add(workerInfo); +// } +// } + Collections.sort(tempList, new Comparator() { @Override public int compare(WorkerImageLibrary o1, WorkerImageLibrary o2) { Integer o1Value = o1.getFaceScore(); @@ -123,27 +124,27 @@ public class WorkerImageLibraryServiceImpl extends ServiceImpl faceInfoList = new ArrayList(); - faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList); - FaceFeature faceFeature = new FaceFeature(); - if(faceInfoList.size()>0) { - faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList.get(0), faceFeature); - } - return faceFeature; - } +// public FaceFeature getFaceFeaByhongruan(File file){ +// ImageInfo imageInfo = getRGBData(file); +// List faceInfoList = new ArrayList(); +// faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList); +// FaceFeature faceFeature = new FaceFeature(); +// if(faceInfoList.size()>0) { +// faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList.get(0), faceFeature); +// } +// return faceFeature; +// } } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerPhotoFeaturesServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerPhotoFeaturesServiceImpl.java index 53c588e20..bfad6d49d 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerPhotoFeaturesServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerPhotoFeaturesServiceImpl.java @@ -1,8 +1,9 @@ package com.zhgd.xmgl.modules.worker.service.impl; -import com.arcsoft.face.FaceFeature; -import com.arcsoft.face.FaceInfo; -import com.arcsoft.face.toolkit.ImageInfo; +//import com.arcsoft.face.FaceFeature; +//import com.arcsoft.face.FaceInfo; +//import com.arcsoft.face.toolkit.ImageInfo; + import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; @@ -18,8 +19,8 @@ import java.io.File; import java.util.ArrayList; import java.util.List; -import static com.arcsoft.face.toolkit.ImageFactory.getRGBData; -import static com.zhgd.xmgl.config.FaceRunner.faceEngine; +//import static com.arcsoft.face.toolkit.ImageFactory.getRGBData; +//import static com.zhgd.xmgl.config.FaceRunner.faceEngine; /** * @Description: 人员现场采集照特征值 @@ -47,7 +48,7 @@ public class WorkerPhotoFeaturesServiceImpl extends ServiceImpl faceInfoList = new ArrayList(); - faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList); - FaceFeature faceFeature = new FaceFeature(); - if(faceInfoList.size()>0) { - faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList.get(0), faceFeature); - } - return faceFeature.getFeatureData(); - } +// public byte[] getFaceFeaByhongruan(File file){ +// ImageInfo imageInfo = getRGBData(file); +// List faceInfoList = new ArrayList(); +// faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList); +// FaceFeature faceFeature = new FaceFeature(); +// if(faceInfoList.size()>0) { +// faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList.get(0), faceFeature); +// } +// return faceFeature.getFeatureData(); +// } }