Pārlūkot izejas kodu

Merge branch 'branch-nt-1.0.0' of https://git.flowbb.cn/RK-Dev/fqgz-server into branch-nt-1.0.0

humuyu 3 gadi atpakaļ
vecāks
revīzija
d5b98ed5b7

+ 5 - 0
eladmin-system/pom.xml

@@ -229,6 +229,11 @@
 			<artifactId>core-renderer</artifactId>
 			<version>R8</version>
 		</dependency>
+		<dependency>
+			<groupId>com.arcsoft.face</groupId>
+			<artifactId>face</artifactId>
+			<version>3.0.0.0</version>
+		</dependency>
 	</dependencies>
 
 	<!-- 打包 -->

+ 100 - 0
eladmin-system/src/main/java/me/zhengjie/application/bank/controller/BankNotarizeController.java

@@ -2,8 +2,14 @@ package me.zhengjie.application.bank.controller;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.arcsoft.face.*;
+import com.arcsoft.face.enums.DetectMode;
+import com.arcsoft.face.enums.DetectOrient;
+import com.arcsoft.face.enums.ErrorInfo;
+import com.arcsoft.face.toolkit.ImageInfo;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import me.zhengjie.annotation.rest.AnonymousGetMapping;
 import me.zhengjie.annotation.rest.AnonymousPostMapping;
 import me.zhengjie.application.admin.service.SmsTemplateService;
 import me.zhengjie.application.bank.service.BankNotarizeService;
@@ -22,6 +28,12 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import static com.arcsoft.face.toolkit.ImageFactory.getRGBData;
+
 @Validated
 @RestController
 @RequestMapping("${fqgz.bank.app.url-prefix}")
@@ -163,4 +175,92 @@ public class BankNotarizeController {
 		}
 		return userAXQInfoService.uploadSeal(businessNo, jsonArray);
 	}
+
+	@AnonymousGetMapping("/active-arcsoft")
+	public ResponseDTO<?> activeArcsoft() {
+		//从官网获取
+		String appId = "6F5JVsCCeSEbBSLSXWVwPki71yK5Y4Jf7oUjA4Y3mLtu";
+		String sdkKey = "5qKM4a9oNSXNhXdwd7Ycrvnxdw2JXjcyeccYmb4zND7S";
+		FaceEngine faceEngine = new FaceEngine("/home/tom/nt/lib/so");
+		//激活引擎
+		int errorCode = faceEngine.activeOnline(appId, sdkKey);
+		if (errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()) {
+			System.out.println("引擎激活失败");
+		} else {
+			System.out.println("引擎激活成功");
+		}
+		//引擎卸载
+		errorCode = faceEngine.unInit();
+		return ResponseDTO.success();
+	}
+
+	@AnonymousGetMapping("/face-compare")
+	public ResponseDTO<?> faceCompare() {
+		// 从官网获取
+		String appId = "6F5JVsCCeSEbBSLSXWVwPki71yK5Y4Jf7oUjA4Y3mLtu";
+		String sdkKey = "5qKM4a9oNSXNhXdwd7Ycrvnxdw2JXjcyeccYmb4zND7S";
+		FaceEngine faceEngine = new FaceEngine("/home/tom/nt/lib/so");
+		// 人脸比对
+		ActiveFileInfo activeFileInfo = new ActiveFileInfo();
+		int errorCode = faceEngine.getActiveFileInfo(activeFileInfo);
+		if (errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()) {
+			System.out.println("获取激活文件信息失败");
+		}
+		//引擎配置
+		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()) {
+			System.out.println("初始化引擎失败");
+		}
+		//人脸检测
+		ImageInfo imageInfo = getRGBData(new File("/home/tom/nt/test/aaa.jpeg"));
+		List<FaceInfo> faceInfoList = new ArrayList<FaceInfo>();
+		errorCode = faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList);
+		System.out.println(faceInfoList);
+
+		//特征提取
+		FaceFeature faceFeature = new FaceFeature();
+		errorCode = faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList.get(0), faceFeature);
+		System.out.println("特征值大小:" + faceFeature.getFeatureData().length);
+
+		//人脸检测2
+		ImageInfo imageInfo2 = getRGBData(new File("/home/tom/nt/test/bbb.jpeg"));
+		List<FaceInfo> faceInfoList2 = new ArrayList<FaceInfo>();
+		errorCode = faceEngine.detectFaces(imageInfo2.getImageData(), imageInfo2.getWidth(), imageInfo2.getHeight(),imageInfo2.getImageFormat(), faceInfoList2);
+		System.out.println(faceInfoList2);
+
+		//特征提取2
+		FaceFeature faceFeature2 = new FaceFeature();
+		errorCode = faceEngine.extractFaceFeature(imageInfo2.getImageData(), imageInfo2.getWidth(), imageInfo2.getHeight(), imageInfo2.getImageFormat(), faceInfoList2.get(0), faceFeature2);
+		System.out.println("特征值大小:" + 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);
+
+		System.out.println("相似度:" + faceSimilar.getScore());
+		//引擎卸载
+		errorCode = faceEngine.unInit();
+		return ResponseDTO.success();
+	}
 }

+ 5 - 5
eladmin-system/src/main/resources/config/application-nt-test.yml

@@ -176,12 +176,12 @@ tencent:
     secret: 34mhXRkury4DCFZpXCQ9E1fr7KUAPTiXTVac6H6e4pvxYMo5jl1m7sehQUqsmwsQ
     keyLicence: ZNjSJAs5nqb0OJR7SXGj8b8Jr8GZuhkIiLceBA1rp/UZ/X8nHbYzfNGkyhXLuTG82QzHIiNxixrzc7zWFcRyxiIIhglIxi0zZDD9nSQsXrHlMJMC3EUXarN9tp5QX0X2dS38gsi+F1TIigfHqxj39iX43wAO4KOfZekBIPNPA2Vb/AjlWnsTbOZCVwANXXwcKsCYiZJrbQlxGlxF9bfXEuhJgILJGQ2iT74wJ/Qn4qRraiyaYzi0Un44C24Y44pbYX4kEokvVQaPnClnAnMH98l8w0VIxPc2lH5io0ATpoPMoZGWKtICVPzrvpaMwjaPlyBzZ/qWwc5jeS+ySxwJyA==
   bank:
-    webankAppId: IDAQVtYe
-    secret: pzFuoHgzUWHKw01XT0H7FIMDMf0a58JsTP31gE1hpP5T5uY1RfyAGftROvAiMery
-    keyLicence: gDsQvwRTlBm4/gdPKXaG6iKnjbpF9irGFpAGVP5yIw3MKZKybnnOGoHs+5cOV2W2z4dyUmiu1yXuUGKuvtwaWRDPoaPvCMFShdy7oEY61Zc0N/0uCvU2qXP+l/ULp2fnnOXJxLRb+Ldsnj2V9LuBgOnyvFyVQ/HPh90ood2X1F0bunPOAIzXmffDLgeO6ZlCF6nLN0cEBkm7m80p6hp25NqdfxfN9n2E+j6rBJe2NLKMazbd+HRaFvWs5PPpR2FowvQPYXiYI8xDMCxhE94waN4E3/BuCY1blf1vxH60DlAB21Z8dP38kwTUXejm0ybvUHu4iyFMCjkPy+XuvslJGw==
+    webankAppId: IDAVZfDX
+    secret: i5Rw30IrvEU5Zm9QWYb0hBNtAzGFFCUlohJu6FI0w254eXd039gVADubvzJRp3qy
+    keyLicence: IHdC/s+4yYQ3Ydkc4S3xKrJmboZSipzQcTeK/SvxwnKiXFzi2Mr9QUX1qa+4mR5OWPHq8M28TCgC4+udPb5QuN41b1ql2W0swQLunEYZqZ/Iet8krdQnE2Kxh9TTU1ZbSL4f6gclIq8oIxjYcpG4K5e3CTqgbE9+DNGINy5DvztjLhz1/IGRy2nbKfhvtzDdq2etcGXVolhbGPmstJ5Krllrm52Rmo1yiEp6IYl9IlaXUzEgKYi/a8PdpoXJtdEF0JXPJSUIwvA5BuFJidJabCKGg2HwS+8Pgq1zB+1KEiQWhu8nNJt5eo8qxBjFkt10MwKY7yIMsvxOpiehLWoFhw==
   ttlsig:
-    sdkappid: 1400750717
-    key: 5d96c3055cb817756f008ce5a098799e7c6122ef0f8a05469e476a79dd821b9a
+    sdkappid: 1400718469
+    key: 4b248dead873140792967469696227c5084429aaaa5a567a4a593402dc28d9b6
 
 xxl:
   job:

+ 2 - 2
eladmin-system/src/main/resources/config/application.yml

@@ -70,5 +70,5 @@ fqgz:
 
 tencent:
   account:
-    secretId: AKIDO7duvhh3xb0C9G5i38xcGftrbBWvZCxY
-    secretKey: ZN7sVvAAzaw4Viz9AwSiiQtAD4g2B5tR
+    secretId: AKIDjNyBC1cy75rPjrlSzUlrfIkxwthIi096
+    secretKey: qdGgstjOq6A0b0FFNJ3tX8appfLq7JRR