- 添加依赖
代码语言:javascript
复制 <!-- 百度云AI API-->
<dependency>
<groupId>com.baidu.aip</groupId>
<artifactId>java-sdk</artifactId>
<version>4.8.0</version>
</dependency>
- 代码示例
代码语言: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;
}
}