这个刷脸登录其实直接调用百度云的SDK就可以了但是回出现安全认证证书的错误,直接定义一个实体类就可以了
讲这个实体类放入包内
public final class DisableSSLCertificateCheckUtil {
/**
* Prevent instantiation of utility class.
*/
private DisableSSLCertificateCheckUtil() {
}
/**
* Disable trust checks for SSL connections.
*/
public static void disableChecks() {
try {
new URL("https://0.0.0.0/").getContent();
} catch (IOException e) {
// This invocation will always fail, but it will register the
// default SSL provider to the URL class.
}
try {
SSLContext sslc;
sslc = SSLContext.getInstance("TLS");
TrustManager[] trustManagerArray = {new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}};
sslc.init(null, trustManagerArray, null);
HttpsURLConnection.setDefaultSSLSocketFactory(sslc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String s, SSLSession sslSession) {
return true;
}
});
} catch (Exception e) {
throw new IllegalArgumentException("证书校验异常!");
}
}
}
调用的时候在每个方法前面加入这个方法
DisableSSLCertificateCheckUtil.disableChecks();
可以看到往百度的人脸库中注册人脸信息成功
通过百度云官网查看人脸信息注册成功
第二件事就是人脸检测,判图片中是否具有面部信息,传输给百度云让百度帮你检测
/**
* 人脸检测:判断图片中是否具有面部信息
*/
@Test
public void testFaceCheck() throws Exception {
//构造图片
String path = "C:\\Users\\ThinkPad\\Desktop\\ihrm\\day11\\资源\\照片\\001.png";
//上传的图片 两种格式 : url地址,Base64字符串形式
byte[] bytes = Files.readAllBytes(Paths.get(path));
String image = Base64Util.encode(bytes);
//调用api方法进行人脸检测
//参数一:(图片的url或者图片的Base64字符串),
//参数二:图片形式(URL,BASE64)
//参数三:hashMap中的基本参数配置(null:使用默认配置)
JSONObject res = client.detect(image, "BASE64", null);
System.out.println(res.toString(2));
}
人脸检测成功, 可以看到没有人脸信息
下面这个事存在人脸信息
根据人脸信息库中的信息进行搜索,获取相似度比较高的人脸信息进行比对,比对结果比较高的进行返回
/**
* 人脸搜索:根据用户上传的图片和指定人脸库中的所有人脸进行比较,
* 获取相似度最高的一个或者某几个的评分
*
* 说明:返回值(数据,只需要第一条,相似度最高的数据)
* score:相似度评分(80分以上可以认为是同一个人)
*/
@Test
public void testFaceSearch() throws Exception {
//构造图片
String path = "C:\\Users\\ThinkPad\\Desktop\\ihrm\\day11\\资源\\照片\\003.png";
byte[] bytes = Files.readAllBytes(Paths.get(path));
String image = Base64Util.encode(bytes);
//人脸搜索
JSONObject res = client.search(image, "BASE64", "itcast", null);
System.out.println(res.toString(2));
}
可以看到人脸搜索成功
人脸库中现存照片信息
用户刷脸登录
进行刷脸登录测试