فهرست منبع

update 百度人脸API离线版和在线版支持随时切换。

deason 11 ماه پیش
والد
کامیت
b5c033c30b

+ 9 - 0
examcloud-starters/examcloud-face-verify-starter/src/main/java/cn/com/qmth/examcloud/starters/face/verify/service/FaceVerifyService.java

@@ -10,16 +10,22 @@ public interface FaceVerifyService {
      */
     FaceResult faceVerifyByBaidu(ImageParm image);
 
+    FaceResult faceVerifyByBaidu(ImageParm image, boolean localEnabled);
+
     /**
      * 百度 人脸检测(支持陌生人检测)
      */
     FaceResult faceDetectByBaidu(ImageParm image);
 
+    FaceResult faceDetectByBaidu(ImageParm image, boolean localEnabled);
+
     /**
      * 百度 人脸比对(不支持陌生人检测)
      */
     FaceResult faceCompareByBaidu(ImageParm image1, ImageParm image2);
 
+    FaceResult faceCompareByBaidu(ImageParm image1, ImageParm image2, boolean localEnabled);
+
     /**
      * 百度 人脸比对(不支持陌生人检测)
      *
@@ -27,6 +33,9 @@ public interface FaceVerifyService {
      */
     FaceResult faceCompareByBaidu(ImageParm image1, ImageParm image2, Double expectFaceCompareScore);
 
+    FaceResult faceCompareByBaidu(ImageParm image1, ImageParm image2, Double expectFaceCompareScore,
+            boolean localEnabled);
+
     /**
      * Face++ 人脸检测(支持陌生人检测)
      */

+ 51 - 0
examcloud-starters/examcloud-face-verify-starter/src/main/java/cn/com/qmth/examcloud/starters/face/verify/service/impl/FaceVerifyServiceImpl.java

@@ -40,6 +40,21 @@ public class FaceVerifyServiceImpl implements FaceVerifyService {
         return BaiduApiHelper.faceVerify(properties, params);
     }
 
+    @Override
+    public FaceResult faceVerifyByBaidu(ImageParm image, boolean localEnabled) {
+        Map<String, String> imageData = this.buildImageParmForBaidu(image);
+        imageData.put("face_field", "spoofing");
+
+        List<Map<String, String>> images = new ArrayList<>();
+        images.add(imageData);
+
+        String params = new JsonHelper().toJson(images);
+        if (localEnabled) {
+            return BaiduApiHelper.faceVerifyUseLocalApi(properties, params);
+        }
+        return BaiduApiHelper.faceVerify(properties, params);
+    }
+
     @Override
     public FaceResult faceDetectByBaidu(ImageParm image) {
         Map<String, String> imageData = this.buildImageParmForBaidu(image);
@@ -53,11 +68,29 @@ public class FaceVerifyServiceImpl implements FaceVerifyService {
         return BaiduApiHelper.faceDetect(properties, params);
     }
 
+    @Override
+    public FaceResult faceDetectByBaidu(ImageParm image, boolean localEnabled) {
+        Map<String, String> imageData = this.buildImageParmForBaidu(image);
+        imageData.put("liveness_control", "NORMAL");
+        imageData.put("max_face_num", "2");
+
+        String params = new JsonHelper().toJson(imageData);
+        if (localEnabled) {
+            return BaiduApiHelper.faceDetectUseLocalApi(properties, params);
+        }
+        return BaiduApiHelper.faceDetect(properties, params);
+    }
+
     @Override
     public FaceResult faceCompareByBaidu(ImageParm image1, ImageParm image2) {
         return this.faceCompareByBaidu(image1, image2, properties.getBaiduExpectFaceCompareScore());
     }
 
+    @Override
+    public FaceResult faceCompareByBaidu(ImageParm image1, ImageParm image2, boolean localEnabled) {
+        return this.faceCompareByBaidu(image1, image2, properties.getBaiduExpectFaceCompareScore(), localEnabled);
+    }
+
     @Override
     public FaceResult faceCompareByBaidu(ImageParm image1, ImageParm image2, Double expectFaceCompareScore) {
         List<Map<String, String>> images = new ArrayList<>();
@@ -75,6 +108,24 @@ public class FaceVerifyServiceImpl implements FaceVerifyService {
         return BaiduApiHelper.faceCompare(properties, params, expectFaceCompareScore);
     }
 
+    @Override
+    public FaceResult faceCompareByBaidu(ImageParm image1, ImageParm image2, Double expectFaceCompareScore,
+            boolean localEnabled) {
+        List<Map<String, String>> images = new ArrayList<>();
+        images.add(this.buildImageParmForBaidu(image1));
+        images.add(this.buildImageParmForBaidu(image2));
+
+        if (expectFaceCompareScore == null) {
+            expectFaceCompareScore = properties.getBaiduExpectFaceCompareScore();
+        }
+
+        String params = new JsonHelper().toJson(images);
+        if (localEnabled) {
+            return BaiduApiHelper.faceCompareUseLocalApi(properties, params, expectFaceCompareScore);
+        }
+        return BaiduApiHelper.faceCompare(properties, params, expectFaceCompareScore);
+    }
+
     private Map<String, String> buildImageParmForBaidu(ImageParm image) {
         if (image == null || StringUtils.isBlank(image.value())) {
             throw new IllegalArgumentException("ImageParm must be not empty.");