Commit 19b65bc5 authored by 廖旭伟's avatar 廖旭伟

基础平台人脸识别代码恢复

parent abff60b6
...@@ -214,11 +214,11 @@ ...@@ -214,11 +214,11 @@
</dependency> </dependency>
<!-- 虹软人脸解析 --> <!-- 虹软人脸解析 -->
<!-- <dependency> <dependency>
<groupId>com.arcsoft.face</groupId> <groupId>com.arcsoft.face</groupId>
<artifactId>arcsoft-sdk-face</artifactId> <artifactId>arcsoft-sdk-face</artifactId>
<version>3.0.0.0</version> <version>3.0.0.0</version>
</dependency>--> </dependency>
<dependency> <dependency>
<groupId>net.coobird</groupId> <groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId> <artifactId>thumbnailator</artifactId>
......
//package com.mortals.xhx.common.utils; package com.mortals.xhx.common.utils;
//
//import com.arcsoft.face.*; import com.arcsoft.face.*;
//import com.arcsoft.face.enums.DetectMode; import com.arcsoft.face.enums.DetectMode;
//import com.arcsoft.face.enums.DetectOrient; import com.arcsoft.face.enums.DetectOrient;
//import com.arcsoft.face.enums.ErrorInfo; import com.arcsoft.face.enums.ErrorInfo;
//import com.arcsoft.face.toolkit.ImageInfo; import com.arcsoft.face.toolkit.ImageInfo;
//import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
//import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
//import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
//
//import java.util.ArrayList; import java.util.ArrayList;
//import java.util.List; import java.util.List;
//
//import static com.arcsoft.face.toolkit.ImageFactory.getRGBData; import static com.arcsoft.face.toolkit.ImageFactory.getRGBData;
//
//@Slf4j @Slf4j
//@Component @Component
//public class FaceUtil { public class FaceUtil {
//
// public FaceEngine initFace(String appId, String sdkKey) { public FaceEngine initFace(String appId, String sdkKey) {
// FaceEngine faceEngine = new FaceEngine(getClass().getResource(getOsName()).getPath()); FaceEngine faceEngine = new FaceEngine(getClass().getResource(getOsName()).getPath());
// //激活引擎 //激活引擎
// int errorCode = faceEngine.activeOnline(appId, sdkKey); int errorCode = faceEngine.activeOnline(appId, sdkKey);
// isTrue(!(errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()), "引擎激活失败"); isTrue(!(errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()), "引擎激活失败");
// ActiveFileInfo activeFileInfo = new ActiveFileInfo(); ActiveFileInfo activeFileInfo = new ActiveFileInfo();
// errorCode = faceEngine.getActiveFileInfo(activeFileInfo); errorCode = faceEngine.getActiveFileInfo(activeFileInfo);
// isTrue(!(errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()), "获取激活文件信息失败"); isTrue(!(errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()), "获取激活文件信息失败");
// //引擎配置 //引擎配置
// EngineConfiguration engineConfiguration = new EngineConfiguration(); EngineConfiguration engineConfiguration = new EngineConfiguration();
// engineConfiguration.setDetectMode(DetectMode.ASF_DETECT_MODE_IMAGE); engineConfiguration.setDetectMode(DetectMode.ASF_DETECT_MODE_IMAGE);
// engineConfiguration.setDetectFaceOrientPriority(DetectOrient.ASF_OP_ALL_OUT); engineConfiguration.setDetectFaceOrientPriority(DetectOrient.ASF_OP_ALL_OUT);
// engineConfiguration.setDetectFaceMaxNum(10); engineConfiguration.setDetectFaceMaxNum(10);
// engineConfiguration.setDetectFaceScaleVal(16); engineConfiguration.setDetectFaceScaleVal(16);
// //功能配置 //功能配置
// FunctionConfiguration functionConfiguration = new FunctionConfiguration(); FunctionConfiguration functionConfiguration = new FunctionConfiguration();
// functionConfiguration.setSupportAge(true); functionConfiguration.setSupportAge(true);
// functionConfiguration.setSupportFace3dAngle(true); functionConfiguration.setSupportFace3dAngle(true);
// functionConfiguration.setSupportFaceDetect(true); functionConfiguration.setSupportFaceDetect(true);
// functionConfiguration.setSupportFaceRecognition(true); functionConfiguration.setSupportFaceRecognition(true);
// functionConfiguration.setSupportGender(true); functionConfiguration.setSupportGender(true);
// functionConfiguration.setSupportLiveness(true); functionConfiguration.setSupportLiveness(true);
// functionConfiguration.setSupportIRLiveness(true); functionConfiguration.setSupportIRLiveness(true);
// engineConfiguration.setFunctionConfiguration(functionConfiguration); engineConfiguration.setFunctionConfiguration(functionConfiguration);
// //初始化引擎 //初始化引擎
// errorCode = faceEngine.init(engineConfiguration); errorCode = faceEngine.init(engineConfiguration);
// isTrue(errorCode == ErrorInfo.MOK.getValue(), "初始化引擎失败"); isTrue(errorCode == ErrorInfo.MOK.getValue(), "初始化引擎失败");
// return faceEngine; return faceEngine;
// } }
//
//
// /** /**
// * 人脸检测、特征提取 * 人脸检测、特征提取
// * *
// * @param faceEngine * @param faceEngine
// * @param bytes * @param bytes
// * @return * @return
// */ */
// public byte[] featureData(FaceEngine faceEngine, byte[] bytes) { public byte[] featureData(FaceEngine faceEngine, byte[] bytes) {
// //人脸检测 //人脸检测
// ImageInfo imageInfo = getRGBData(bytes); ImageInfo imageInfo = getRGBData(bytes);
// List<FaceInfo> faceInfoList = new ArrayList<FaceInfo>(); List<FaceInfo> faceInfoList = new ArrayList<FaceInfo>();
// faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList); faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList);
// //特征提取 //特征提取
// FaceFeature faceFeature = new FaceFeature(); FaceFeature faceFeature = new FaceFeature();
// faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList.get(0), faceFeature); faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList.get(0), faceFeature);
// return faceFeature.getFeatureData(); return faceFeature.getFeatureData();
// } }
//
//
// /** /**
// * 特征比对 * 特征比对
// * *
// * @param targeFace * @param targeFace
// * @param sourceFace * @param sourceFace
// * @return * @return
// */ */
// public boolean featureComparison(FaceEngine faceEngine, byte[] targeFace, byte[] sourceFace) { public boolean featureComparison(FaceEngine faceEngine, byte[] targeFace, byte[] sourceFace) {
// //特征比对 //特征比对
// FaceFeature targetFaceFeature = new FaceFeature(); FaceFeature targetFaceFeature = new FaceFeature();
// targetFaceFeature.setFeatureData(targeFace); targetFaceFeature.setFeatureData(targeFace);
// FaceFeature sourceFaceFeature = new FaceFeature(); FaceFeature sourceFaceFeature = new FaceFeature();
// sourceFaceFeature.setFeatureData(sourceFace); sourceFaceFeature.setFeatureData(sourceFace);
// FaceSimilar faceSimilar = new FaceSimilar(); FaceSimilar faceSimilar = new FaceSimilar();
// faceEngine.compareFaceFeature(targetFaceFeature, sourceFaceFeature, faceSimilar); faceEngine.compareFaceFeature(targetFaceFeature, sourceFaceFeature, faceSimilar);
// float score = faceSimilar.getScore(); float score = faceSimilar.getScore();
// if (score > 0.8) { if (score > 0.8) {
// return true; return true;
// } }
// return false; return false;
// } }
//
// public void unInit(FaceEngine faceEngine) { public void unInit(FaceEngine faceEngine) {
// faceEngine.unInit(); faceEngine.unInit();
// } }
//
// public String getOsName() { public String getOsName() {
// String os = System.getProperty("os.name"); String os = System.getProperty("os.name");
// String osName = os.toLowerCase().startsWith("win") ? "/face_lib/win64" : "/face_lib/linux"; String osName = os.toLowerCase().startsWith("win") ? "/face_lib/win64" : "/face_lib/linux";
// return osName; return osName;
// } }
//
//
// private void isTrue(boolean b, String errorMsg) { private void isTrue(boolean b, String errorMsg) {
// if (!b) { if (!b) {
// throw new AppException(errorMsg); throw new AppException(errorMsg);
// } }
// } }
//
//} }
//package com.mortals.xhx.face.factory; package com.mortals.xhx.face.factory;
//
//import com.arcsoft.face.ActiveFileInfo; import com.arcsoft.face.ActiveFileInfo;
//import com.arcsoft.face.EngineConfiguration; import com.arcsoft.face.EngineConfiguration;
//import com.arcsoft.face.FaceEngine; import com.arcsoft.face.FaceEngine;
//import com.arcsoft.face.FunctionConfiguration; import com.arcsoft.face.FunctionConfiguration;
//import com.arcsoft.face.enums.DetectMode; import com.arcsoft.face.enums.DetectMode;
//import com.arcsoft.face.enums.DetectOrient; import com.arcsoft.face.enums.DetectOrient;
//import com.arcsoft.face.enums.ErrorInfo; import com.arcsoft.face.enums.ErrorInfo;
//import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.pool2.BasePooledObjectFactory; import org.apache.commons.pool2.BasePooledObjectFactory;
//import org.apache.commons.pool2.PooledObject; import org.apache.commons.pool2.PooledObject;
//import org.apache.commons.pool2.impl.DefaultPooledObject; import org.apache.commons.pool2.impl.DefaultPooledObject;
//
//@Slf4j @Slf4j
//public class FaceEnginePoolFactory extends BasePooledObjectFactory<FaceEngine> { public class FaceEnginePoolFactory extends BasePooledObjectFactory<FaceEngine> {
//
// private String appId; private String appId;
// private String sdkKey; private String sdkKey;
// private String sdkLibPath; private String sdkLibPath;
//
// public FaceEnginePoolFactory(String appId, String sdkKey, String sdkLibPath) { public FaceEnginePoolFactory(String appId, String sdkKey, String sdkLibPath) {
// this.appId = appId; this.appId = appId;
// this.sdkKey = sdkKey; this.sdkKey = sdkKey;
// this.sdkLibPath = sdkLibPath; this.sdkLibPath = sdkLibPath;
// //this.sdkLibPath = "D:\\face\\win64"; //this.sdkLibPath = "D:\\face\\win64";
// } }
//
// /** /**
// * 在对象池中创建对象 * 在对象池中创建对象
// * @return * @return
// * @throws Exception * @throws Exception
// */ */
// @Override @Override
// public FaceEngine create() throws Exception { public FaceEngine create() throws Exception {
// FaceEngine faceEngine = new FaceEngine(sdkLibPath); FaceEngine faceEngine = new FaceEngine(sdkLibPath);
// //激活引擎 //激活引擎
// int errorCode = faceEngine.activeOnline(appId, sdkKey); int errorCode = faceEngine.activeOnline(appId, sdkKey);
// if (errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()) { if (errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()) {
// log.warn("引擎激活失败"); log.warn("引擎激活失败");
// } }
// ActiveFileInfo activeFileInfo=new ActiveFileInfo(); ActiveFileInfo activeFileInfo=new ActiveFileInfo();
// errorCode = faceEngine.getActiveFileInfo(activeFileInfo); errorCode = faceEngine.getActiveFileInfo(activeFileInfo);
// if (errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()) { if (errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()) {
// log.warn("获取激活文件信息失败"); log.warn("获取激活文件信息失败");
// } }
// //引擎配置 //引擎配置
// EngineConfiguration engineConfiguration = new EngineConfiguration(); EngineConfiguration engineConfiguration = new EngineConfiguration();
// engineConfiguration.setDetectMode(DetectMode.ASF_DETECT_MODE_IMAGE); engineConfiguration.setDetectMode(DetectMode.ASF_DETECT_MODE_IMAGE);
// engineConfiguration.setDetectFaceOrientPriority(DetectOrient.ASF_OP_ALL_OUT); engineConfiguration.setDetectFaceOrientPriority(DetectOrient.ASF_OP_ALL_OUT);
// engineConfiguration.setDetectFaceMaxNum(10); engineConfiguration.setDetectFaceMaxNum(10);
// engineConfiguration.setDetectFaceScaleVal(16); engineConfiguration.setDetectFaceScaleVal(16);
// //功能配置 //功能配置
// FunctionConfiguration functionConfiguration = new FunctionConfiguration(); FunctionConfiguration functionConfiguration = new FunctionConfiguration();
// functionConfiguration.setSupportAge(true); functionConfiguration.setSupportAge(true);
// functionConfiguration.setSupportFace3dAngle(true); functionConfiguration.setSupportFace3dAngle(true);
// functionConfiguration.setSupportFaceDetect(true); functionConfiguration.setSupportFaceDetect(true);
// functionConfiguration.setSupportFaceRecognition(true); functionConfiguration.setSupportFaceRecognition(true);
// functionConfiguration.setSupportGender(true); functionConfiguration.setSupportGender(true);
// functionConfiguration.setSupportLiveness(true); functionConfiguration.setSupportLiveness(true);
// functionConfiguration.setSupportIRLiveness(true); functionConfiguration.setSupportIRLiveness(true);
// engineConfiguration.setFunctionConfiguration(functionConfiguration); engineConfiguration.setFunctionConfiguration(functionConfiguration);
// //初始化引擎 //初始化引擎
// errorCode = faceEngine.init(engineConfiguration); errorCode = faceEngine.init(engineConfiguration);
//
// if (errorCode != ErrorInfo.MOK.getValue()) { if (errorCode != ErrorInfo.MOK.getValue()) {
// log.error("初始化引擎失败"); log.error("初始化引擎失败");
// } }
// return faceEngine; return faceEngine;
// } }
//
// /** /**
// * 包装对象 * 包装对象
// * @param faceEngine * @param faceEngine
// * @return * @return
// */ */
// @Override @Override
// public PooledObject<FaceEngine> wrap(FaceEngine faceEngine) { public PooledObject<FaceEngine> wrap(FaceEngine faceEngine) {
// return new DefaultPooledObject<>(faceEngine); return new DefaultPooledObject<>(faceEngine);
// } }
// /** /**
// * 销毁对象 * 销毁对象
// * @param faceEngine 对象池 * @param faceEngine 对象池
// * @throws Exception 异常 * @throws Exception 异常
// */ */
// @Override @Override
// public void destroyObject(PooledObject<FaceEngine> faceEngine) throws Exception { public void destroyObject(PooledObject<FaceEngine> faceEngine) throws Exception {
// super.destroyObject(faceEngine); super.destroyObject(faceEngine);
// } }
//
// /** /**
// * 校验对象是否可用 * 校验对象是否可用
// * @param faceEngine 对象池 * @param faceEngine 对象池
// * @return 对象是否可用结果,boolean * @return 对象是否可用结果,boolean
// */ */
// @Override @Override
// public boolean validateObject(PooledObject<FaceEngine> faceEngine) { public boolean validateObject(PooledObject<FaceEngine> faceEngine) {
// return super.validateObject(faceEngine); return super.validateObject(faceEngine);
// } }
//
// /** /**
// * 激活钝化的对象系列操作 * 激活钝化的对象系列操作
// * @param faceEngine 对象池 * @param faceEngine 对象池
// * @throws Exception 异常信息 * @throws Exception 异常信息
// */ */
// @Override @Override
// public void activateObject(PooledObject<FaceEngine> faceEngine) throws Exception { public void activateObject(PooledObject<FaceEngine> faceEngine) throws Exception {
// super.activateObject(faceEngine); super.activateObject(faceEngine);
// } }
//
// /** /**
// * 钝化未使用的对象 * 钝化未使用的对象
// * @param faceEngine 对象池 * @param faceEngine 对象池
// * @throws Exception 异常信息 * @throws Exception 异常信息
// */ */
// @Override @Override
// public void passivateObject(PooledObject<FaceEngine> faceEngine) throws Exception { public void passivateObject(PooledObject<FaceEngine> faceEngine) throws Exception {
// super.passivateObject(faceEngine); super.passivateObject(faceEngine);
// } }
//
//} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment