Java工具集-百度云人脸识别工具类

  1. 添加依赖
代码语言:javascript
复制
        <!-- 百度云AI API-->
        <dependency>
            <groupId>com.baidu.aip</groupId>
            <artifactId>java-sdk</artifactId>
            <version>4.8.0</version>
        </dependency>
  1. 代码示例
代码语言:javascript
复制
package com.simple.util.baidu;

import com.baidu.aip.face.AipFace;
import org.json.JSONArray;
import org.json.JSONObject;

import java.util.HashMap;

/**

  • @program: simple_tools

  • @description:

  • @author: ChenWenLong

  • @create: 2019-12-31 09:56
    **/
    public class BaiduAiUtil {

    // 以下内容请在注册百度云之后,在百度云中获取
    private static final String APP_ID = "该内容请在注册百度云之后,在百度云中获取";
    private static final String API_KEY = "该内容请在注册百度云之后,在百度云中获取";
    private static final String SECRET_KEY = "该内容请在注册百度云之后,在百度云中获取";
    private static final String IMAGE_TYPE = "该内容请在注册百度云之后,在百度云中获取";
    private static final String GROUP_ID = "该内容请在注册百度云之后,在百度云中获取";

    private static AipFace client;

    private static HashMap<String, String> options = new HashMap<String, String>();

    public BaiduAiUtil() {
    options.put("quality_control", "NORMAL");
    options.put("liveness_control", "LOW");
    }

    static {
    client = new AipFace(APP_ID, API_KEY, SECRET_KEY);
    }

    /**

    • 功能描述:
    • 〈人脸注册 :将用户照片存入人脸库中〉
    • @params : [userId, image]
    • @return : java.lang.Boolean
    • @author : cwl
    • @date : 2019/12/31 10:00
      */
      public static Boolean faceRegister(String userId, String image) {
      // 人脸注册
      JSONObject res = client.addUser(image, IMAGE_TYPE, GROUP_ID, userId, options);
      Integer errorCode = res.getInt("error_code");
      return errorCode == 0 ? true : false;
      }

    /**

    • 功能描述:
    • 〈人脸更新 :更新人脸库中的用户照片〉
    • @params : [userId, image]
    • @return : java.lang.Boolean
    • @author : cwl
    • @date : 2019/12/31 10:01
      */
      public static Boolean faceUpdate(String userId, String image) {
      // 人脸更新
      JSONObject res = client.updateUser(image, IMAGE_TYPE, GROUP_ID, userId, options);
      Integer errorCode = res.getInt("error_code");
      return errorCode == 0 ? true : false;
      }

    /**

    • 功能描述:
    • 〈人脸检测:判断上传图片中是否具有面部头像〉
    • @params : [image]
    • @return : java.lang.Boolean
    • @author : cwl
    • @date : 2019/12/31 10:01
      */
      public static Boolean faceCheck(String image) {
      JSONObject res = client.detect(image, IMAGE_TYPE, options);
      if (res.has("error_code") && res.getInt("error_code") == 0) {
      JSONObject resultObject = res.getJSONObject("result");
      Integer faceNum = resultObject.getInt("face_num");
      return faceNum == 1?true:false;
      }else{
      return false;
      }
      }

    /**

    • 功能描述:
    • 〈人脸查找:查找人脸库中最相似的人脸并返回数据〉
    • 处理:用户的匹配得分(score)大于80分,即可认为是同一个用户
    • @params : [image]
    • @return : java.lang.String
    • @author : cwl
    • @date : 2019/12/31 10:01
      */
      public static String faceSearch(String image) {
      JSONObject res = client.search(image, IMAGE_TYPE, GROUP_ID, options);
      if (res.has("error_code") && res.getInt("error_code") == 0) {
      JSONObject result = res.getJSONObject("result");
      JSONArray userList = result.getJSONArray("user_list");
      if (userList.length() > 0) {
      JSONObject user = userList.getJSONObject(0);
      double score = user.getDouble("score");
      if(score > 80) {
      return user.getString("user_id");
      }
      }
      }
      return null;
      }
      }