办公设备维修网
资讯中心 您所在的位置:网站首页 资讯中心 Java借助百度云人脸识别实现人脸注册、登录功能的完整示例

Java借助百度云人脸识别实现人脸注册、登录功能的完整示例

2024-06-17 22:57:06| 来源: 网络整理

Java借助百度云人脸识别实现人脸注册、登录功能的完整示例 百度云人脸识别 预览效果 环境准备 百度云API的基本使用 添加依赖 新建AipFace 人脸检测 人脸对比 人脸注册 人脸搜索 人脸删除 身份验证 Spring Boot集成百度云人脸识别 添加依赖 配置application.yml BaiduAiUtils工具类封装 Controller层 Service层 跨域配置 Vue前端 H5新媒体接口调用摄像头 跨域问题 百度云人脸识别 预览效果

先来看一下Java借助百度云人脸识别实现人脸注册登录功能的预览效果

环境准备

登录百度智能云控制台:https://console.bce.baidu.com/,开通人脸识别

选择人脸识别项,创建人脸识别应用

人脸识别接口默认全部选择,也可以选择添加其他接口。

得到应用ID、 API KEY、Secret Key

百度云API的基本使用

人脸识别API文档:https://cloud.baidu.com/doc/FACE/index.html

人脸识别SDK下载:https://ai.baidu.com/sdk

添加依赖

下载对应语言的SDK后安装Face Java SDK或使用maven依赖。

这里使用Maven依赖,访问https://mvnrepository.com搜索com.baidu.aip

com.baidu.aip java-sdk 4.16.10 新建AipFace

AipFace是人脸识别的Java客户端,为使用人脸识别的开发人员提供了一系列的交互方法。初始化完成后建议单例使用,避免重复获取access_token

public class Sample { //设置APPID/AK/SK public static final String APP_ID = "你的 App ID"; public static final String API_KEY = "你的 Api Key"; public static final String SECRET_KEY = "你的 Secret Key"; public static void main(String[] args) { // 初始化一个AipFace AipFace client = new AipFace(APP_ID, API_KEY, SECRET_KEY); // 可选:设置网络连接参数 // 建立连接的超时时间(单位:毫秒) client.setConnectionTimeoutInMillis(2000); // 通过打开的连接传输数据的超时时间(单位:毫秒) client.setSocketTimeoutInMillis(60000); // 可选:设置代理服务器地址, http和socket二选一,或者均不设置 client.setHttpProxy("proxy_host", proxy_port); // 设置http代理 client.setSocketProxy("proxy_host", proxy_port); // 设置socket代理 // 调用接口 String image = "取决于image_type参数,传入BASE64字符串或URL字符串或FACE_TOKEN字符串"; String imageType = "BASE64"; // 人脸检测 JSONObject res = client.detect(image, imageType, options); System.out.println(res.toString(2)); }} 人脸检测

获得眼、口、鼻轮廓,识别多种人脸属性,如性别,年龄,表情等信息

应用场景:如人脸属性分析,基于人脸关键点的加工分析,人脸营销活动等。

具体参考人脸识别Api文档主页:

SDK文档REST-API-SDKJava-SDK人脸检测 import com.baidu.aip.face.AipFace;import com.baidu.aip.util.Base64Util;import org.json.JSONException;import org.json.JSONObject;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import java.io.IOException;import java.nio.file.Files;import java.nio.file.Paths;import java.util.HashMap;@SpringBootTestclass FaceApplicationTests { @Test public void testFaceCheck() throws IOException, JSONException { /** * 传入appId、apiKey、secretkey。创建Java代码和百度云交互的Client对象 */ AipFace client = new AipFace("26820026", "wiGTH1L6Peh9QFrgW0yqUx8b", "lIHbEgfUpzvgN4qYHYaGt77ggqicwvaf"); // 构造模拟人像图片。 取决于image_type参数,传入BASE64字符串或URL字符串或FACE_TOKEN字符串 String path = "D:\face.png"; byte[] bytes = Files.readAllBytes(Paths.get(path)); String encode = Base64Util.encode(bytes); // 传入可选参数调用接口 HashMap options = new HashMap(); options.put("face_field", "age"); options.put("max_face_num", "2"); options.put("face_type", "LIVE"); options.put("liveness_control", "LOW"); // 调用Api进行人脸检测 /** * image 图片的url或者base64字符串 * imageType 图片形式(URL,BASE64) * options Map中配置基本参数,null:使用默认配置 */ JSONObject res = client.detect(encode, "BASE64", options); System.out.println(res.toString(2)); }}

人脸检测结果返回数据

face_num:检测到的图片中的人脸数量face_listface_num:检测到的图片中的人脸数量人脸信息列表,具体包含的参数参考下面的列表face_token:人脸图片的唯一标识location:人脸在图片中的位置 { "result": { "face_num": 1, "face_list": [ { "liveness": { "livemapscore": 0.3849793375 }, "angle": { "roll": -8.37, "pitch": 17.62, "yaw": 16.2 }, "face_token": "a99aa4ef86a0abf7e91bd79fee0170e5", "location": { "top": 126.19, "left": 202.3, "rotation": -1, "width": 142, "height": 140 }, "face_probability": 1, "age": 22 } ] }, "log_id": 1322968968, "error_msg": "SUCCESS", "cached": 0, "error_code": 0, "timestamp": 1658935322} 人脸对比

对比如下人脸

public static void main(String[] args) throws Exception { /** * 传入appId、apiKey、secretkey。创建Java代码和百度云交互的Client对象 */ AipFace client = new AipFace("27285857", "oaHvQava3f9upcKof3wXa20a", "EDGmHiWRtheCsudE9zyo7cYA8AmZKK9G"); // 登录图片 String loginImagePath = "D:\user\login.jpg"; String loginImagePath2 = "D:\user\login2.jpg"; // 对比的图片 String comparedImagePath = "D:\user\compared.jpg"; Double faceComparison = faceComparison(client, loginImagePath, comparedImagePath); if (faceComparison > 85) { System.out.println("人脸识别登录成功"); } else { System.out.println("人脸识别登录失败"); } Double faceComparison2 = faceComparison(client, loginImagePath2, comparedImagePath); if (faceComparison2 > 85) { System.out.println("人脸识别登录成功"); } else { System.out.println("人脸识别登录失败"); } } static Double faceComparison(AipFace client, String loginImagePath, String comparedImagePath) throws Exception { byte[] loginImageBytes = Files.readAllBytes(Paths


【本文地址】 转载请注明 

最新文章

推荐文章

CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备16040606号-1