From e1c1a4b8d066c2dec11e6c5f4b4a7d0305cba434 Mon Sep 17 00:00:00 2001 From: fl <3098731433@qq.com> Date: Wed, 5 Mar 2025 17:47:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B0=E5=9D=AA=E4=BA=BA=E8=84=B8=E8=AF=86?= =?UTF-8?q?=E5=88=ABkey=E6=9B=B4=E6=96=B0=EF=BC=8Cjar=E5=8C=85=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/arcsoft-sdk-face-3.0.0.0-linux.jar | Bin 62469 -> 62469 bytes .../bonus/bmw/person/utils/ArcFaceHelper.java | 96 +++++++++--------- 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/modules/bmw/lib/arcsoft-sdk-face-3.0.0.0-linux.jar b/modules/bmw/lib/arcsoft-sdk-face-3.0.0.0-linux.jar index a5dcac9bda3cadd13160f5ffb4ee459c2e449b3a..3091a2ecb54d799156b2d8aa00f4a7a73f8882d9 100644 GIT binary patch delta 1554 zcmYL|eN4=89LImZ-<|W2J90Qm>6D{sIiVp>7mR>%oEjI-hFRpRTBcpb zWQf+Ud78&CMI@WeBwe|O9Hj-Krq;$1-lEOhj0Iyj)_;1VyO zoY_0D>IgS*a>1ri_u^dFG z?FUV1Hf^3sGX#kl@@z`}Rdf!k5WKCUEZGWLe#4T+3_oIAKaAfW(LRoMr)-hJy(#M_V2fdc8AtNn^c)g28XuLF(JM-*!4$Fii(@1| ze(QB?d6l8}1{VWu`F8N-BP1|=V2tiYD$ylPGy$>AS< zO-Y64IpPjik;+^dF&pH3-7z&PU8aL*zU#yoOlvw-glGQwzIe9atQsaLK3!W=$}xgy^5Ch}I@0d95yuDl`SuRd&W0DPxL5h*1!n`OzL|d2L{}fcZ)^-jQNf3&7(Dso2#l8b=^-Z-{#ayc zQ!qes(>wsu6zjd4mR2~Y_%5V-@EgJ~b4Xd!EI#myo*N=`y{o%>nB;ujFTAv|-vX8~OQl893=$@E>PrStt%j9<+o4I9tL2G?oZ}49gOLn-(2_+mZqh z*BT3Ov2_E$Kz*T>qK#SC+4}? zxg2A3Mgc7DiUG*)iU#=Hg_%Q~I8LrJ4odY-3_r0OOMAM}`EfTcO65Ys3>U8Dkqg(W z>Or5(9!&V8Cmoz8_M%T#FJ4jOIT_`~yEeHoVTF4Ibp3KKg?A&eZ!UnbF9zUk-#V%A Q-jR^+oBzLMMc=dj0Udz>L;wH) delta 1554 zcmYL|e@u*V9LJyMxpRKxjvS6sx?PT@<%EX(I*F8ANnC{a5n&X6WbV zNTkCU;dg+WYAjV~qy@rzR=HMqivj$T()ZT9J=6YIh?zgMVg(6jrvjw1GXN~?bbtq} zUj+U(cOncZKB80t!S@}ayEB#8G#4zN(stL@-`TB6E> zfC^{r#Hc6E#K{F2oBqX-Y$`LH95#(315t9a&>6&EnzJ1fW$`-(L-D@FyTJl)PrSp4 z9vVJqEAnaa4C*0L^ib?l@~@H#S%skO9A(c}(C}N9*mA;%dBZTiAUO<$%TiQwQRHob z<#-ldR^(8InMOrIh}k`k_ZzoLp|5en1S~OawBksio1cRNo4KyClC~(P0+Yq!FP@S7 z_-!|^Of!~V+L4l9+h$QULDJt+BTb2XN<6xVX%NS^Sx z>q?q@HUH*DD4=p1eUL6~{k6DZ6GK9lxI?YOCmh z&uYxT{F-<7kajh_V8y-4ugpIaLGxSaqbB;s2!4|-29ruZJVoP~A4j0I+)s} zAk~oqaLKU|V8F2kz}SYNs2jmnR^aZxHC3g-B5Eplb&o)p4f{zdA-=8K5#P1kG(eg(P6cJIaK}fFM+$UxNi=Cxi1;uUEg}C RaPLU;_bvZ#*@f?U{{Tu|2BrW2 diff --git a/modules/bmw/src/main/java/com/bonus/bmw/person/utils/ArcFaceHelper.java b/modules/bmw/src/main/java/com/bonus/bmw/person/utils/ArcFaceHelper.java index 6bcc9f2..5468959 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/person/utils/ArcFaceHelper.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/person/utils/ArcFaceHelper.java @@ -1,7 +1,7 @@ package com.bonus.bmw.person.utils; import com.arcsoft.face.*; -import com.arcsoft.face.enums.ImageFormat; +import com.arcsoft.face.enums.*; import org.apache.commons.lang3.StringUtils; import javax.imageio.ImageIO; import java.awt.color.ColorSpace; @@ -30,13 +30,13 @@ public class ArcFaceHelper { * linux_64 */ private static final String LINUX64_SDK_KEY = "GggpcEphVxXLXcpEZz6tdC19evqXbbhMyYt71DGLwnCp"; - - private static FaceEngine faceEngine = null; - - public static final float STANDARD_SCORE = 0.85F; - static { - try{ + private static FaceEngine faceEngine = null; + + public static final float STANDARD_SCORE = 0.85F; + + static { + try{ String os = System.getProperty("os.name"); if(StringUtils.startsWith(os.toLowerCase(), "win")){ faceEngine = new FaceEngine("D:\\arcsoft_lib_64"); @@ -50,28 +50,28 @@ public class ArcFaceHelper { }catch (Throwable e){ System.out.println("加载人脸识别引擎异常:" + e.getMessage()); } - } - - public static FaceEngine getFaceEngine() { - return faceEngine; - } - - public FaceResult getFaceFeatures(String imgSrc) { + } + + public static FaceEngine getFaceEngine() { + return faceEngine; + } + + public FaceResult getFaceFeatures(String imgSrc) { if(imgSrc.contains("http")){ return getFaceFeatures(getNetUrlHttp(imgSrc)); }else{ return getFaceFeatures(new File(imgSrc)); } - } + } - public static FaceResult getFaceFeatures(File file) { - ImageInfo imageInfo = getRGBData(file); - if (imageInfo == null){ + public static FaceResult getFaceFeatures(File file) { + ImageInfo imageInfo = getRGBData(file); + if (imageInfo == null){ return null; } - EngineConfiguration engineConfiguration = EngineConfiguration.builder().functionConfiguration( + EngineConfiguration engineConfiguration = EngineConfiguration.builder().functionConfiguration( FunctionConfiguration.builder() - .supportFaceDetect(true) + .supportFaceDetect(true) .supportAge(true) .supportFace3dAngle(true) .supportFaceDetect(true) @@ -82,24 +82,24 @@ public class ArcFaceHelper { faceEngine.init(engineConfiguration); //人脸检测 List lstFaceInfo = new ArrayList(); - faceEngine.detectFaces(imageInfo.getRgbData(), imageInfo.getWidth(), imageInfo.getHeight(), - ImageFormat.CP_PAF_BGR24, lstFaceInfo); + faceEngine.detectFaces(imageInfo.getRgbData(), imageInfo.getWidth(), imageInfo.getHeight(), + ImageFormat.CP_PAF_BGR24, lstFaceInfo); System.out.println("检测到人脸数:" + lstFaceInfo.size()); if (lstFaceInfo.size() == 0) { return null; // throw new NullPointerException("未检测到人脸"); - } + } FaceResult result = new FaceResult(); //提取人脸特征 FaceFeature faceFeature = new FaceFeature(); - int code = faceEngine.extractFaceFeature(imageInfo.getRgbData(), imageInfo.getWidth(), imageInfo.getHeight(), - ImageFormat.CP_PAF_BGR24, lstFaceInfo.get(0), faceFeature); + int code = faceEngine.extractFaceFeature(imageInfo.getRgbData(), imageInfo.getWidth(), imageInfo.getHeight(), + ImageFormat.CP_PAF_BGR24, lstFaceInfo.get(0), faceFeature); System.out.println("提取特征结果码:" + code); result.setFeatures(faceFeature.getFeatureData()); //人脸信息检测 - int processCode = faceEngine.process(imageInfo.getRgbData(), imageInfo.getWidth(), imageInfo.getHeight(), - ImageFormat.CP_PAF_BGR24, lstFaceInfo, - FunctionConfiguration.builder().supportAge(true).supportFace3dAngle(true).supportGender(true).build()); + int processCode = faceEngine.process(imageInfo.getRgbData(), imageInfo.getWidth(), imageInfo.getHeight(), + ImageFormat.CP_PAF_BGR24, lstFaceInfo, + FunctionConfiguration.builder().supportAge(true).supportFace3dAngle(true).supportGender(true).build()); System.out.println("人脸信息检测码:" + processCode); if(code != 0 || processCode != 0){ return null; @@ -122,14 +122,14 @@ public class ArcFaceHelper { System.out.println("3D信息:" + face3DAngleList + ",3D信息提取码:" + face3dCode); unInintEngine(); return result; - } + } - public static void unInintEngine() { - int code = faceEngine.unInit(); - System.out.println("销毁引擎:" + code); - } - - public static ImageInfo getRGBData(File file) { + public static void unInintEngine() { + int code = faceEngine.unInit(); + System.out.println("销毁引擎:" + code); + } + + public static ImageInfo getRGBData(File file) { if (file == null){ return null; } @@ -163,18 +163,18 @@ public class ArcFaceHelper { //进行数据格式化为可用数据 BufferedImage dstImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_3BYTE_BGR); try { - if (resultImage.getType() != BufferedImage.TYPE_3BYTE_BGR) { - ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_LINEAR_RGB); - ColorConvertOp colorConvertOp = new ColorConvertOp(cs, dstImage.createGraphics().getRenderingHints()); - colorConvertOp.filter(resultImage, dstImage); - } else { - dstImage = resultImage; - } - } catch (Exception e) { - // TODO: handle exception - System.err.println(e.toString()); - } - + if (resultImage.getType() != BufferedImage.TYPE_3BYTE_BGR) { + ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_LINEAR_RGB); + ColorConvertOp colorConvertOp = new ColorConvertOp(cs, dstImage.createGraphics().getRenderingHints()); + colorConvertOp.filter(resultImage, dstImage); + } else { + dstImage = resultImage; + } + } catch (Exception e) { + // TODO: handle exception + System.err.println(e.toString()); + } + //获取rgb数据 imageInfo.setRgbData(((DataBufferByte) (dstImage.getRaster().getDataBuffer())).getData()); return imageInfo; @@ -241,5 +241,5 @@ public class ArcFaceHelper { } return file; } - + }