使用jsp技术实现网站的人脸登录注册
- 在百度云AI上获取应用的密钥(注册百度账号->创建人脸检测的应用)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200616195307965.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM0MDU3Mw==,size_16,color_FFFFFF,t_70)
下面箭头标的会在封装百度AI工具类中用上
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200616195413792.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM0MDU3Mw==,size_16,color_FFFFFF,t_70)
- 下载百度AI提供的java sdk(就是给java引入相关的jar包)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200616200325758.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM0MDU3Mw==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200616200402148.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM0MDU3Mw==,size_16,color_FFFFFF,t_70)
将下载的压缩包解压,并引入到项目中(WEB-INF的lib下)
- 构造一个项目来实现人脸登录注册
- 先编写一个封装了百度云AI提供的人脸登录注册方法的工具类
package com.project.util;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import org.json.JSONObject;
import com.baidu.aip.face.AipFace;
import com.baidu.aip.face.FaceVerifyRequest;
import com.baidu.aip.face.MatchRequest;
import com.baidu.aip.util.Base64Util;
public class FaceUtil {
private static final String AppID = "your appid";
private static final String APIKey = "your apikey";
private static final String SecretKey = "your secretkey";
static AipFace client = null;
static {
client = new AipFace(AppID, APIKey, SecretKey);
client.setConnectionTimeoutInMillis(2000);
client.setSocketTimeoutInMillis(60000);
}
public static String detectFace(File file, String max_face_num) {
try {
return detectFace(FileToByte(file), max_face_num);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static String detectFace(byte[] arg0, String max_face_num) {
try {
HashMap<String, String> options = new HashMap<String, String>();
options.put("face_field",
"age,beauty,expression,faceshape,gender,glasses,race,qualities");
options.put("max_face_num", "2");
options.put("face_type", "LIVE");
String imgStr = Base64Util.encode(arg0);
String imageType = "BASE64";
JSONObject res = client.detect(imgStr, imageType, options);
return res.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static String matchFace(File file1, File file2) {
try {
return matchFace(FileToByte(file1), FileToByte(file2));
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static String matchFace(byte[] arg0, byte[] arg1) {
String imgStr1 = Base64Util.encode(arg0);
String imgStr2 = Base64Util.encode(arg1);
MatchRequest req1 = new MatchRequest(imgStr1, "BASE64");
MatchRequest req2 = new MatchRequest(imgStr2, "BASE64");
ArrayList<MatchRequest> requests = new ArrayList<MatchRequest>();
requests.add(req1);
requests.add(req2);
JSONObject res = client.match(requests);
return res.toString();
}
public static String searchFace(File file, String groupIdList, String userId) {
try {
return searchFaces(FileToByte(file), groupIdList, userId);
} catch (IOException e) {
e.printStackTrace();
}