兰坪人脸识别key更新,jar包提交

This commit is contained in:
fl 2025-03-05 17:47:23 +08:00
parent c2f20432c6
commit e1c1a4b8d0
2 changed files with 48 additions and 48 deletions

View File

@ -1,7 +1,7 @@
package com.bonus.bmw.person.utils; package com.bonus.bmw.person.utils;
import com.arcsoft.face.*; import com.arcsoft.face.*;
import com.arcsoft.face.enums.ImageFormat; import com.arcsoft.face.enums.*;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import java.awt.color.ColorSpace; import java.awt.color.ColorSpace;
@ -30,13 +30,13 @@ public class ArcFaceHelper {
* linux_64 * linux_64
*/ */
private static final String LINUX64_SDK_KEY = "GggpcEphVxXLXcpEZz6tdC19evqXbbhMyYt71DGLwnCp"; private static final String LINUX64_SDK_KEY = "GggpcEphVxXLXcpEZz6tdC19evqXbbhMyYt71DGLwnCp";
private static FaceEngine faceEngine = null;
public static final float STANDARD_SCORE = 0.85F;
static { private static FaceEngine faceEngine = null;
try{
public static final float STANDARD_SCORE = 0.85F;
static {
try{
String os = System.getProperty("os.name"); String os = System.getProperty("os.name");
if(StringUtils.startsWith(os.toLowerCase(), "win")){ if(StringUtils.startsWith(os.toLowerCase(), "win")){
faceEngine = new FaceEngine("D:\\arcsoft_lib_64"); faceEngine = new FaceEngine("D:\\arcsoft_lib_64");
@ -50,28 +50,28 @@ public class ArcFaceHelper {
}catch (Throwable e){ }catch (Throwable e){
System.out.println("加载人脸识别引擎异常:" + e.getMessage()); System.out.println("加载人脸识别引擎异常:" + e.getMessage());
} }
} }
public static FaceEngine getFaceEngine() { public static FaceEngine getFaceEngine() {
return faceEngine; return faceEngine;
} }
public FaceResult getFaceFeatures(String imgSrc) { public FaceResult getFaceFeatures(String imgSrc) {
if(imgSrc.contains("http")){ if(imgSrc.contains("http")){
return getFaceFeatures(getNetUrlHttp(imgSrc)); return getFaceFeatures(getNetUrlHttp(imgSrc));
}else{ }else{
return getFaceFeatures(new File(imgSrc)); return getFaceFeatures(new File(imgSrc));
} }
} }
public static FaceResult getFaceFeatures(File file) { public static FaceResult getFaceFeatures(File file) {
ImageInfo imageInfo = getRGBData(file); ImageInfo imageInfo = getRGBData(file);
if (imageInfo == null){ if (imageInfo == null){
return null; return null;
} }
EngineConfiguration engineConfiguration = EngineConfiguration.builder().functionConfiguration( EngineConfiguration engineConfiguration = EngineConfiguration.builder().functionConfiguration(
FunctionConfiguration.builder() FunctionConfiguration.builder()
.supportFaceDetect(true) .supportFaceDetect(true)
.supportAge(true) .supportAge(true)
.supportFace3dAngle(true) .supportFace3dAngle(true)
.supportFaceDetect(true) .supportFaceDetect(true)
@ -82,24 +82,24 @@ public class ArcFaceHelper {
faceEngine.init(engineConfiguration); faceEngine.init(engineConfiguration);
//人脸检测 //人脸检测
List<FaceInfo> lstFaceInfo = new ArrayList<FaceInfo>(); List<FaceInfo> lstFaceInfo = new ArrayList<FaceInfo>();
faceEngine.detectFaces(imageInfo.getRgbData(), imageInfo.getWidth(), imageInfo.getHeight(), faceEngine.detectFaces(imageInfo.getRgbData(), imageInfo.getWidth(), imageInfo.getHeight(),
ImageFormat.CP_PAF_BGR24, lstFaceInfo); ImageFormat.CP_PAF_BGR24, lstFaceInfo);
System.out.println("检测到人脸数:" + lstFaceInfo.size()); System.out.println("检测到人脸数:" + lstFaceInfo.size());
if (lstFaceInfo.size() == 0) { if (lstFaceInfo.size() == 0) {
return null; return null;
// throw new NullPointerException("未检测到人脸"); // throw new NullPointerException("未检测到人脸");
} }
FaceResult result = new FaceResult(); FaceResult result = new FaceResult();
//提取人脸特征 //提取人脸特征
FaceFeature faceFeature = new FaceFeature(); FaceFeature faceFeature = new FaceFeature();
int code = faceEngine.extractFaceFeature(imageInfo.getRgbData(), imageInfo.getWidth(), imageInfo.getHeight(), int code = faceEngine.extractFaceFeature(imageInfo.getRgbData(), imageInfo.getWidth(), imageInfo.getHeight(),
ImageFormat.CP_PAF_BGR24, lstFaceInfo.get(0), faceFeature); ImageFormat.CP_PAF_BGR24, lstFaceInfo.get(0), faceFeature);
System.out.println("提取特征结果码:" + code); System.out.println("提取特征结果码:" + code);
result.setFeatures(faceFeature.getFeatureData()); result.setFeatures(faceFeature.getFeatureData());
//人脸信息检测 //人脸信息检测
int processCode = faceEngine.process(imageInfo.getRgbData(), imageInfo.getWidth(), imageInfo.getHeight(), int processCode = faceEngine.process(imageInfo.getRgbData(), imageInfo.getWidth(), imageInfo.getHeight(),
ImageFormat.CP_PAF_BGR24, lstFaceInfo, ImageFormat.CP_PAF_BGR24, lstFaceInfo,
FunctionConfiguration.builder().supportAge(true).supportFace3dAngle(true).supportGender(true).build()); FunctionConfiguration.builder().supportAge(true).supportFace3dAngle(true).supportGender(true).build());
System.out.println("人脸信息检测码:" + processCode); System.out.println("人脸信息检测码:" + processCode);
if(code != 0 || processCode != 0){ if(code != 0 || processCode != 0){
return null; return null;
@ -122,14 +122,14 @@ public class ArcFaceHelper {
System.out.println("3D信息" + face3DAngleList + "3D信息提取码" + face3dCode); System.out.println("3D信息" + face3DAngleList + "3D信息提取码" + face3dCode);
unInintEngine(); unInintEngine();
return result; return result;
} }
public static void unInintEngine() { public static void unInintEngine() {
int code = faceEngine.unInit(); int code = faceEngine.unInit();
System.out.println("销毁引擎:" + code); System.out.println("销毁引擎:" + code);
} }
public static ImageInfo getRGBData(File file) { public static ImageInfo getRGBData(File file) {
if (file == null){ if (file == null){
return null; return null;
} }
@ -163,18 +163,18 @@ public class ArcFaceHelper {
//进行数据格式化为可用数据 //进行数据格式化为可用数据
BufferedImage dstImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_3BYTE_BGR); BufferedImage dstImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_3BYTE_BGR);
try { try {
if (resultImage.getType() != BufferedImage.TYPE_3BYTE_BGR) { if (resultImage.getType() != BufferedImage.TYPE_3BYTE_BGR) {
ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_LINEAR_RGB); ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_LINEAR_RGB);
ColorConvertOp colorConvertOp = new ColorConvertOp(cs, dstImage.createGraphics().getRenderingHints()); ColorConvertOp colorConvertOp = new ColorConvertOp(cs, dstImage.createGraphics().getRenderingHints());
colorConvertOp.filter(resultImage, dstImage); colorConvertOp.filter(resultImage, dstImage);
} else { } else {
dstImage = resultImage; dstImage = resultImage;
} }
} catch (Exception e) { } catch (Exception e) {
// TODO: handle exception // TODO: handle exception
System.err.println(e.toString()); System.err.println(e.toString());
} }
//获取rgb数据 //获取rgb数据
imageInfo.setRgbData(((DataBufferByte) (dstImage.getRaster().getDataBuffer())).getData()); imageInfo.setRgbData(((DataBufferByte) (dstImage.getRaster().getDataBuffer())).getData());
return imageInfo; return imageInfo;
@ -241,5 +241,5 @@ public class ArcFaceHelper {
} }
return file; return file;
} }
} }