最近做毕业设计,算是自己第一次独立完成一个系统,使用了百度ai的接口,查询了大部分网络上的博客,也来分享一下自己的经验。

1.首先,使用之前先注册一个百度AI开放平台的账号

2.登录之后,创建属于自己的项目

3.找到自己应用的AppID,API Key(AK),Secret Key(SK).

好了,到这里就算完成了准备工作。
接下来要开始编写代码了。

因为我使用的是人脸识别来完成登录工作,所以我需要调用电脑的摄像头,完成摄像,图片上传的工作。

这部分可以借鉴这个网址

> https://www.cnblogs.com/imwtr/p/6413595.html

注:使用画布的toDataURL方法获取到的就是base64编码格式,是一个String类型的,所以后台需要用string类型获取。

注:base64编码是有编码头部的,所以base64前面一部分是可以去掉的,可以在网上找一下相关的方法。

前台完成之后,开始后台的相关编码。

我使用了SSM框架进行开发,所以在Controller使用string来获取的。不过在传数据之前,还需要做一个事,就是将需要识别的人脸上传到百度ai的人脸库中。


在这里,一般都是调用它的接口,将照片上传。前台可以像上面的前台一样,也可以使用的file属性,来上传图片。具体选择看自己。

然后正式开始百度ai的调用。

1.在pom.xml中加入依赖

或者直接下载jar包,导入。

2.下载百度ai提供的四个工具类

/**
* 重要提示代码中所需工具类
* FileUtil,Base64Util,HttpUtil,GsonUtils请从
* https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
* https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
* https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
* https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
* 下载
*/

3.新建一个工具类FaceSpot,获取token和实现其他接口

//在这里填写自己的AK,SK
public static String getAuth() {// 官网获取的 API Key 更新为你注册的String clientId = "你的AK";// 官网获取的 Secret Key 更新为你注册的String clientSecret = "你的SK";return getAuth(clientId, clientSecret);}//获取自己的token_access
public static String getAuth(String ak, String sk) {// 获取token地址String authHost = "https://aip.baidubce.com/oauth/2.0/token?";String getAccessTokenUrl = authHost// 1. grant_type为固定参数+ "grant_type=client_credentials"// 2. 官网获取的 API Key+ "&client_id=" + ak// 3. 官网获取的 Secret Key+ "&client_secret=" + sk;try {URL realUrl = new URL(getAccessTokenUrl);// 打开和URL之间的连接HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();connection.setRequestMethod("GET");connection.connect();// 获取所有响应头字段Map<String, List<String>> map = connection.getHeaderFields();// 遍历所有的响应头字段for (String key : map.keySet()) {System.err.println(key + "--->" + map.get(key));}// 定义 BufferedReader输入流来读取URL的响应BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String result = "";String line;while ((line = in.readLine()) != null) {result += line;}/*** 返回结果示例*/System.err.println("result:" + result);JSONObject jsonObject = new JSONObject(result);String access_token = jsonObject.getString("access_token");return access_token;} catch (Exception e) {System.err.printf("获取token失败!");e.printStackTrace(System.err);}return null;}

4.调用人脸库接口

//人脸库注册public static String add(String img, String u_id, String user_info) {// 请求urlString url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add";try {String imgParam = URLEncoder.encode(img, "UTF-8");Map<String, Object> map = new HashMap<>();map.put("image", img);//活体检测map.put("liveness_control", "NORMAL");//搜索的组map.put("group_id", "Graduate");//图片格式map.put("image_type", "BASE64");//图片质量要求map.put("quality_control", "LOW");//人物idmap.put("user_id", u_id);//人物信息map.put("user_info", user_info);String param = GsonUtils.toJson(map);// 注意Param格式的编写,此处是最核心的内容,注意uid、user_info、group_id以及images的含义,详细信息看下图参数表,这里添加的图片数量可以自己权衡String accessToken = FaceSpot.getAuth();String result = HttpUtil.post(url, accessToken, "application/json", param);System.out.println(result);return result;} catch (Exception e) {e.printStackTrace();}return null;}

5.人脸识别接口

//人脸搜索public static String faceSearch(String img) {// 请求urlString url = "https://aip.baidubce.com/rest/2.0/face/v3/search";try {Map<String, Object> map = new HashMap<>();//图片map.put("image", img);//活体检测map.put("liveness_control", "NORMAL");//搜索的组map.put("group_id_list", "Graduate");//图片格式map.put("image_type", "BASE64");//图片质量要求map.put("quality_control", "LOW");String param = GsonUtils.toJson(map);// 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。String accessToken = FaceSpot.getAuth();String result = HttpUtil.post(url, accessToken, "application/json", param);System.out.println(result);return result;} catch (Exception e) {e.printStackTrace();}return null;}

6.先上传了图片,然后调用前台摄像头,截取图片,上传图片后进行搜索,确认是哪一个用户。获取他的id和信息,并跳转到页面。

package com.etc.graduate.Controller;import com.etc.graduate.bean.user;
import com.etc.graduate.bean.usermessage;
import com.etc.graduate.services.UserMessageService;
import com.etc.graduate.services.UserService;
import com.etc.graduate.utils.FaceSpot;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpSession;
import java.util.List;@Controller
public class FaceLoginCheck {@Autowiredprivate UserMessageService userMessageService;@Autowiredprivate UserService userService;@RequestMapping(value = "/FaceLoginCheck",method = RequestMethod.POST)@ResponseBodypublic String LoginCheck(@RequestParam("src")String src, HttpSession session){String score = null;String username = null;String userid=null;if (src == "" || src == null){return "false";}//先执行搜索人脸,获取到人脸对应的String result = FaceSpot.faceSearch(src);if (result != null) {//将result的uid取出来JSONObject jsonObject = new JSONObject(result);String result1 = jsonObject.optString("result");JSONObject jsonObject1 = new JSONObject(result1);String result2 = jsonObject1.optString("user_list");/*Arrya和Object是不同的,Object个适用于{}里的数据,Array适用[]的数据可以去看一下https://blog.csdn.net/qq_44807642/article/details/97767696*/JSONArray jsonArray = new JSONArray(result2);int length = jsonArray.length();for (int i = 0; i <length ; i++) {String string = jsonArray.optString(i);JSONObject jsonObject2 = new JSONObject(string);score = jsonObject2.optString("score");userid = jsonObject2.optString("user_id");}}else {return "false";}//使用userscore判断,超过95以上才能通过Double score1 = Double.valueOf(score);if(score1>95){int uid = Integer.parseInt(userid);//接着使用username获取数据,传入到session,传到前台user user = new user();usermessage usermessage = new usermessage();//使用id获取用户信息List<user> userList = userService.selsetUserById(uid);for (user anUserList : userList) {user = anUserList;}username = user.getUsername();List<usermessage> usermessageList = userMessageService.selectUserMessage(username);for (usermessage anUsermessageList : usermessageList) {usermessage = anUsermessageList;}String password = user.getUserpassword();String usersex = usermessage.getUsersex();String useremail = usermessage.getUseremail();String userphone = usermessage.getUserphone();int usercourse = usermessage.getUsercourse();//将获取到的数据存进sessionsession.setAttribute("uid", uid);session.setAttribute("username", username);session.setAttribute("pwd", password);session.setAttribute("usersex", usersex);session.setAttribute("useremail", useremail);session.setAttribute("userphone", userphone);session.setAttribute("usercourse", usercourse);return "true";}else {return "false";}}
}

参考:https://blog.csdn.net/qq_44807642/article/details/97767696

https://www.cnblogs.com/imwtr/p/6413595.html

SSM+ajax使用百度AI人脸识别(人脸对比)功能心得相关推荐

  1. c# 利用AForge和百度AI开发实时人脸识别

    baiduAIFaceIdentify项目是C#语言,集成百度AI的SDK利用AForge开发的实时人脸识别的小demo,里边包含了人脸检测识别,人脸注册,人脸登录等功能 人脸实时检测识别功能 思路是 ...

  2. 人脸检测颜值软件_AI人脸颜值测颜版下载-百度ai测试颜值人脸识别源码下载v1.0 免费版-西西软件下载...

    百度ai测试颜值人脸识别源码这是由官方百度AI精心打造出来的,这款软件将人脸识别氛围V2和V3两个接口,而且用户使用可以参考相应的文档权限来选择接口类型,让广大用户学习到百度AI人脸识别测颜值相关知识 ...

  3. python 人脸比对,python 使用百度AI接口进行人脸对比的步骤

    1. 注册百度云账号 注册百度智能云,提交申请. 创建应用获取AppID,API Key,Secret Key. 2. 安装baidu python api 人脸对比 API 文档 pip insta ...

  4. python调用百度AI接口识别营业执照

    上一篇文章介绍了应用python中的pytesseract库和OCR识别软件进行文字识别.本文介绍应用百度AI的文字识别功能对营业执照进行识别,感兴趣的朋友一起来看看效果吧.    一.安装baidu ...

  5. Android离线人脸识别方案对比

    Android 离线人脸识别方案对比总结 文章目录 Android 离线人脸识别方案对比总结 百度.腾讯.阿里.Face++.商汤等人脸识别 虹软人脸识别 OpenCV 人脸识别 中科视拓(Seeta ...

  6. 百度AI 汽车识别

    百度AI 汽车识别 今天我对百度ai的汽车车型识别进行了上手,发现和百度ai的人脸识别流程没有相差很大,在学习过人脸识别后,对照百度的教程就很容易对汽车识别进行上手了. 我们直接进入正题 1.申请自己 ...

  7. 人脸识别_云端人脸识别-人脸识别SDK+API-人脸识别闸机解决方案

    云端人脸识别-人脸识别SDK+API-人脸识别闸机解决方案 人脸识别闸机-人脸识别闸机解决方案 软硬一体的人脸识别闸机解决方案,提升人员系统化管理的安全性与便捷性 方案构成 针对人员出入的闸机及门禁场 ...

  8. 虹软人脸识别 - 人脸特征数据的存取

    虹软人脸识别 - 人脸特征数据的存取 文章目录 虹软人脸识别 - 人脸特征数据的存取 一.简介 二.数据库应用 1. 连接数据库 2. 建表 3. 注册人脸并保存其特征值到数据库 4. 获取人脸特征数 ...

  9. 人脸反光识别和读数识别_云端人脸识别-人脸识别SDK+API-人脸识别闸机解决方案...

    云端人脸识别-人脸识别SDK+API-人脸识别闸机解决方案 人脸识别闸机-人脸识别闸机解决方案 软硬一体的人脸识别闸机解决方案,提升人员系统化管理的安全性与便捷性 方案构成 针对人员出入的闸机及门禁场 ...

最新文章

  1. 变与不变——一汽-大众的数字化人才战略“突围”
  2. 32和64位系统各内置类型所占字节大小(int char long double 指针等)
  3. 谈谈设计模式的几个原则
  4. 将tomcat添加到服务中
  5. linux下编译openjdk7,Ubuntu 14.04.3 64位环境下OpenJDK7编译
  6. DOM--5 动态修改样式和层叠样式表
  7. oracle安全性规则,[ORACLE ]安全性
  8. python 操作mysql_Python 操作MySQL
  9. arm 基于qcamera实现_面向HPC和笔记本市场 ARM发Cortex A78C增强版
  10. webbrowser代理c#代码实现
  11. C语言无符号整数和有符号整数的比较
  12. 平衡树的深度与最少结点数问题
  13. 面试被问项目上线没_从面试官角度谈观察到的程序员技能瓶颈
  14. gson将JSON字符串转成Java对象
  15. 360全景拼接 opencv_全景拼接算法简介
  16. Android项目中嵌入Cocos游戏项目
  17. 瑞丽衰落信道的MATLAB仿真
  18. Excel--查找、替换及定位
  19. DBeaver出现:The Network Adapter could not establish the connection 已解决
  20. Amcharts4使用笔记

热门文章

  1. android相机拍照代码,Android 调用相机拍照,适配到Android 10
  2. keepalived外界无法通过虚拟ip访问
  3. 计算机考试试卷怎么做,试卷编写软件
  4. 500万商家、2000个产业带将参加天猫双11
  5. 抖音电脑网页版正式上线
  6. 【excel】关于【合并单元格】的常用操作
  7. 魅族路由器极速版刷机_好先生追剧神器 魅族路由器极速版评测
  8. 陕西工业职业技术学院计算机怎么样,陕西工业职业技术学院怎么样 评价排名好不好(10条)...
  9. 若依框架部署Linux访问报错,401认证失败,无法访问系统资源
  10. ServletConext和Aplication的区别