基于百度人脸识别的小区人脸门禁系统

本文记录了一款使用Java、Servlet、Vue、jQuery等技术开发的小区人脸识别门禁系统的实现过程,包括人脸录入、更新、删除、搜索等功能。系统利用百度API进行人脸图像处理,实现了登录统计、数据备份恢复、小区信息管理和用户信息管理。文章详细介绍了登录模块、小区信息管理模块、用户信息管理和登录统计模块的实现逻辑。
摘要由CSDN通过智能技术生成

又是一年毕业季,自己转眼间也毕业一年了!!!前段时间帮学妹指导了一个小区人脸识别门禁系统,整个的实现思路在此记录下,感兴趣的可以参考一下。

整个项目沟通后情况如下:

需求功能:

  1. 人脸录入
  2. 人脸更新
  3. 人脸删除
  4. 人脸搜索
  5. 数据备份,数据恢复
  6. 人脸登录
  7. 登录统计
  8. 管理员系统登录
  9. 小区管理

所用技术:按客户掌握的技能采用java、servlet、vue、jquery、js、ajax、boostrap、css、人脸图像处理部分主要采用百度api。

工期:2个星期。

整个项目最终效果:

https://i-blog.csdnimg.cn/blog_migrate/d2d38eeee93520dfab92543b405fd5d7.png

https://i-blog.csdnimg.cn/blog_migrate/a2a86d16a5714e7869bb7d4e5576ffc8.png

 

  • 登录模块的实现思路

(一)代码实现

1、用户请求程序登录入口login.html页面;

2、采集摄像头实时人脸数据,每个1秒钟截取摄像头视频一帧画面,将人脸图片数据转换成base64格式发送给后台控制器;

3、控制器接收前台传入的人脸数据,调用具体的人脸搜索服务;

4、后台拼装参数请求百度api接口;

5、后台获取百度api接口响应数据;

6、后台判断该用户人脸数据是否存在远程人脸库且相似度超过80%,则继续查询本地该用户保存的社区信息和用户基本信息并返回,同时记录用户登录记录,最后提示用户登录成功。反之则返回空的用户信息用户登录失败;

 

 
 

 

 

 

(二)代码实现

//截取图片并请求后台隔

package com.face.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.face.opj.Face;
import com.face.opj.FaceAndGroup;
import com.face.opj.Groups;
import com.face.opj.MsgSearch;
import com.face.opj.ResultObj;
import com.face.service.FaceInfoCrud;
import com.face.service.FaceSearch;
import com.face.service.GroupsInfoCrud;
import com.face.service.LoginInfoCrud;
import com.google.gson.Gson;

import sun.misc.BASE64Decoder;


@WebServlet("/Login")
public class Login extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8;");
        PrintWriter out = response.getWriter();

        String b64 = request.getParameter("saveImg");
        BASE64Decoder decoder = new BASE64Decoder();    
        byte[] b = decoder.decodeBuffer(b64); 

        Gson gson = new Gson();
        FaceInfoCrud fc = new FaceInfoCrud();
        GroupsInfoCrud gc = new GroupsInfoCrud();
        LoginInfoCrud lc = new LoginInfoCrud();
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
        ResultObj ro = new ResultObj("500", "操作失败", null);
        Map result = new HashMap<String, Object>();
        result.put("groupName", "noInfo");
        result.put("name", "noInfo");
        result.put("tel", "noInfo");
        result.put("addr", "noInfo");

        //调用百度人脸接口查询
        if(b64!=null) {
            
            MsgSearch msgs = FaceSearch.Search(b);

            if(msgs.error_code == 0) {
                String userId = msgs.ShowSearched().user_id;
                String groupId = msgs.ShowSearched().group_id;

                ArrayList<FaceAn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值