文章目录
前言
基于百度AI开放平台的人脸识别功能的实现与应用,人脸识别网址:人脸识别
使用工具:Eclipse,Tomcat,JDK
人脸识别流程图
一、注册账号
去百度AI开放平台注册账号:百度AI开放平台
二、创建应用
左上角菜单-人脸识别-公有云-应用列表-创建应用-随便填(可能需要实名认证)-立即创建
帮助文档地址:帮助文档
三、下载SDK文件
下载sdk文件,得到【aip-java-sdk-4.16.13.jar】【json-20160810.jar】【log4j-1.2.17.jar】放到web项目的lib目录下
四、创建工具类
创建链接开放平台的工具类【AipFaceHelper】
package util;
import com.baidu.aip.face.AipFace;
public class AipFaceHelper {
// 设置APPID/AK/SK
private static final String APP_ID = "29253192";
private static final String API_KEY = "2dMMFM6rGgazYKxselR93LGy";
private static final String SECRET_KEY = "KUdIhAZttiwcrFpy9H8wqaMHLffW6lq2";
private static AipFace client = null;
private AipFaceHelper() {
}
public static AipFace getInstance() {
if (client == null) {
client = new AipFace(APP_ID, API_KEY, SECRET_KEY);
client.setConnectionTimeoutInMillis(2000);
client.setSocketTimeoutInMillis(60000);
}
return client;
}
}
五、创建用于人脸识别的网页
创建用于人脸识别的网页【index.jsp】实现注册功能
1.引入css文件
<link href="css/bootstrap.css" rel="stylesheet">
<link href="css/bface.css" rel="stylesheet">
2.创建注册按钮
<button class="btn btn-success" data-toggle="modal" data-target="#myModal" onclick="showReg()">注册</button>
3.创建模态框,用于捕捉人脸
<!--人脸识别模态框-->
<div class="modal fade" id="myModal" aria-hidden="true"
data-backdrop="static" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel"
style="display: inline-block">BFace ▪ 人脸识别</h4>
<button type="button" class="close" data-dismiss="modal"
aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div class="modal-body-title">
<!--头部提示文字-->
<p>请将头部放在视频区域内,匹配成功将会自动登入系统</p>
<p>
如果视频内未出现识别框或长时间未响应 <a style="cursor: pointer">请单击此处</a>
</p>
</div>
<!--人脸框-->
<div class="modal-body-viode">
<canvas id="canvas" width="420" height="340"></canvas>
<video id="video" width="420" height="340" preload autoplay loop
muted></video>
</div>
</div>
</div>
</div>
</div>
4.引入相关js文件
<!--JS导入-->
<script type="text/javascript" src="js/tracking-min.js"></script>
<script type="text/javascript" src="js/face-min.js"></script>
<script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/bface.js"></script>
<script type="text/javascript">
function showLogin() {
//调用人脸识别方法
login("http://localhost:8080/faceDiscern/LoginServlet");
}
function showReg() {
//调用人脸识别方法
reg("http://localhost:8080/faceDiscern/RegServlet");
}
</script>
六、创建设置字符编码的过滤器
创建设置字符编码的过滤器【EncodingFilter】
package filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
@WebFilter("/*")
public class EncodingFilter implements Filter {
public EncodingFilter() {
// TODO Auto-generated constructor stub
}
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8"); // 设置防止提交的中文数据乱码
response.setContentType("text/html;charset=UTF-8"); // 设置响应的信息不乱码
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
七、创建注册用的Servlet
创建注册用的Servlet【RegServlet】在doget中加入如下代码
HashMap<String, String> options = new HashMap<String, String>();
options.put("quality_control", "LOW");// 图片质量控制
options.put("liveness_control", "LOW");// 活体检测控制
String base64=request.getParameter("base");
base64=base64.substring(22);//去掉字符串说明信息(data:image/jpeg,base64)
String imageType = "BASE64";
String groupId = "student";//可以根据需要随意修改
String userId = "9879";//可以根据需要随意修改
JSONObject res = AipFaceHelper.getInstance().addUser(base64, imageType, groupId, userId, options);
System.out.println(res.toString(2));
response.getWriter().print(res.toString(2));
八、在index.jsp页面加入登录按钮代码
在index.jsp页面加入登录按钮代码
<button class="btn btn-success" data-toggle="modal"
data-target="#myModal" onclick="showLogin()">登陆</button>
九、创建一个登录的Servlet
创建一个登录的Servlet【LoginServlet】在doget中加入如下代码
HashMap<String, String> options = new HashMap<String, String>();
options.put("quality_control", "LOW");// 图片质量控制
options.put("liveness_control", "LOW");// 活体检测控制
options.put("max_user_num", "1"); // 查找后返回的用户数量。返回相似度最高的几个用户
String base64=request.getParameter("base");
base64=base64.substring(22);//去掉字符串说明信息(data:image/jpeg,base64)
String imageType = "BASE64";
String groupId = "student";
JSONObject res = AipFaceHelper.getInstance().search(base64, imageType, groupId, options);
System.out.println(res.toString(2));
response.getWriter().print(res.toString(2));
总结
以上便是基于百度AI开放平台的人脸识别的讲解与代码实现,希望能帮助大家更好的了解人脸识别功能的实际操作。感谢大家的观看,如果想要源码点个关注私聊我哦,我随时都在。