java实现人脸识别源码【含测试效果图】——前期准备工作及访问提示
来源:互联网 发布:linux磁盘分区命令 编辑:程序博客网 时间:2024/05/16 06:47
人脸识别,顾名思义就是刷脸登陆,用户输入用户名,用脸来代替密码进行登陆,就算你是相似度很高的双胞胎也可以正确识别。废话我也不多说了,准备工作大家请往下看:
先看一下做好的截图,界面没有美化,主要是功能,美化界面的花可以弄个高大上的放上去就OK了:
如图:
————————————————————————————————————————————————
——————————————————————————————————————————
登陆的截图:
————————————————————————————————————————————
——————————————————————————————————————————
OK 接下来我们继续往下看:
首先我们创建个数据库:我使用的是sql server,数据库脚本如下:
USE [master]GO/****** Object: Database [faceDB] Script Date: 2017-09-26 11:18:39 ******/CREATE DATABASE [faceDB] CONTAINMENT = NONE ON PRIMARY ( NAME = N'faceDB', FILENAME = N'E:\DB\faceDB.mdf' , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N'faceDB_log', FILENAME = N'E:\DB\faceDB_log.ldf' , SIZE = 2048KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)GOALTER DATABASE [faceDB] SET COMPATIBILITY_LEVEL = 110GOIF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))beginEXEC [faceDB].[dbo].[sp_fulltext_database] @action = 'enable'endGOALTER DATABASE [faceDB] SET ANSI_NULL_DEFAULT OFF GOALTER DATABASE [faceDB] SET ANSI_NULLS OFF GOALTER DATABASE [faceDB] SET ANSI_PADDING OFF GOALTER DATABASE [faceDB] SET ANSI_WARNINGS OFF GOALTER DATABASE [faceDB] SET ARITHABORT OFF GOALTER DATABASE [faceDB] SET AUTO_CLOSE OFF GOALTER DATABASE [faceDB] SET AUTO_CREATE_STATISTICS ON GOALTER DATABASE [faceDB] SET AUTO_SHRINK OFF GOALTER DATABASE [faceDB] SET AUTO_UPDATE_STATISTICS ON GOALTER DATABASE [faceDB] SET CURSOR_CLOSE_ON_COMMIT OFF GOALTER DATABASE [faceDB] SET CURSOR_DEFAULT GLOBAL GOALTER DATABASE [faceDB] SET CONCAT_NULL_YIELDS_NULL OFF GOALTER DATABASE [faceDB] SET NUMERIC_ROUNDABORT OFF GOALTER DATABASE [faceDB] SET QUOTED_IDENTIFIER OFF GOALTER DATABASE [faceDB] SET RECURSIVE_TRIGGERS OFF GOALTER DATABASE [faceDB] SET DISABLE_BROKER GOALTER DATABASE [faceDB] SET AUTO_UPDATE_STATISTICS_ASYNC OFF GOALTER DATABASE [faceDB] SET DATE_CORRELATION_OPTIMIZATION OFF GOALTER DATABASE [faceDB] SET TRUSTWORTHY OFF GOALTER DATABASE [faceDB] SET ALLOW_SNAPSHOT_ISOLATION OFF GOALTER DATABASE [faceDB] SET PARAMETERIZATION SIMPLE GOALTER DATABASE [faceDB] SET READ_COMMITTED_SNAPSHOT OFF GOALTER DATABASE [faceDB] SET HONOR_BROKER_PRIORITY OFF GOALTER DATABASE [faceDB] SET RECOVERY FULL GOALTER DATABASE [faceDB] SET MULTI_USER GOALTER DATABASE [faceDB] SET PAGE_VERIFY CHECKSUM GOALTER DATABASE [faceDB] SET DB_CHAINING OFF GOALTER DATABASE [faceDB] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF ) GOALTER DATABASE [faceDB] SET TARGET_RECOVERY_TIME = 0 SECONDS GOEXEC sys.sp_db_vardecimal_storage_format N'faceDB', N'ON'GOUSE [faceDB]GO/****** Object: Table [dbo].[users] Script Date: 2017-09-26 11:18:39 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[users]([id] [int] NOT NULL,[username] [varchar](50) NOT NULL,[password] [varchar](50) NULL,[headphoto] [varchar](50) NULL, CONSTRAINT [PK_users] PRIMARY KEY CLUSTERED ([id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GOSET ANSI_PADDING OFFGOINSERT [dbo].[users] ([id], [username], [password], [headphoto]) VALUES (-1445236349, N'muxng', NULL, N'/picture/1506088284547.png')INSERT [dbo].[users] ([id], [username], [password], [headphoto]) VALUES (-1444803643, N'admin', NULL, N'/picture/1506088717253.png')INSERT [dbo].[users] ([id], [username], [password], [headphoto]) VALUES (-1444707110, N'adm1', NULL, N'/picture/1506088813786.png')INSERT [dbo].[users] ([id], [username], [password], [headphoto]) VALUES (-1444274083, N'24519om', NULL, N'/picture/1506089246813.png')INSERT [dbo].[users] ([id], [username], [password], [headphoto]) VALUES (-1444264936, N'2450om', NULL, N'/picture/1506089255960.png')INSERT [dbo].[users] ([id], [username], [password], [headphoto]) VALUES (-1444243590, N'123456', NULL, N'/picture/1506089277306.png')INSERT [dbo].[users] ([id], [username], [password], [headphoto]) VALUES (-1444184827, N'1234567', NULL, N'/picture/1506089336069.png')INSERT [dbo].[users] ([id], [username], [password], [headphoto]) VALUES (1, N'雄', N'123456', N'image')USE [master]GOALTER DATABASE [faceDB] SET READ_WRITE GO
数据库建好之后我们导入下所用到的jar包,jar包下载地址:点击这里
项目中所用到的js文件下载:点击这里
我们先看看设计思路:
实现思路:
1.前台通过扫描人脸进行注册,注册必填字段:username,password,id,headphoto
2.登陆,分为两种,一种为密码登陆,另一种为人脸登陆
技术分析:
注册:
1.当用户注册时,通过打开本地摄像头提取人的脸部。
2.获取到人脸之后在通过ajax进行提交到Servlet
3.在Servlet里面进行处理(添加到人脸库中),并且将前台ajax传过来的base64图像进行转换成图片,然后上传到服务器中。
4.提交到人脸库的同时,设置编号为注册用户的id
5.注册用户成功。
登陆:
1.用户需要输入登陆的用户名(username)
2.通过本地打开摄像头进行获取人脸的base64图像信息
3.将base64图像信息转换成图片之后在进行与服务器中的人脸进行比对
4.比对成功
以上就是设计思路。由于本案例使用的是纯jdbc+Servlet,所以我们有必要先把web.xml拿出来亮亮相,以下就是:
<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <servlet> <servlet-name>FaceServlet</servlet-name> <servlet-class>org.web.FaceServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>FaceServlet</servlet-name> <url-pattern>/FaceServlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>
最后,我们的脸的图片是放在服务器中的,所以我们先在webroot下面创建一个文件夹picture,所有的人脸图片均放在这里面,如图:
jdk尽量使用1.7的,lib1和lib里面都是jar包,大家可以直接创建一个lib就可以了。
------------------------------------------------------------2017.11.06更新-------------------------------------------------------------------
博文发出之后好多人问我要源码,那我就把源码贴上吧!
java实现人脸识别源码【含测试效果图】——前台页面层(login.jsp)
java实现人脸识别源码【含测试效果图】——前台显示层(index.jsp)
java实现人脸识别源码【含测试效果图】——Servlet层(FaceServlet)
java实现人脸识别源码【含测试效果图】——ServiceImpl层(UserServiceImpl)
java实现人脸识别源码【含测试效果图】——Service层(IUserService)
java实现人脸识别源码【含测试效果图】——DaoImpl层(UserDaoImpl)
java实现人脸识别源码【含测试效果图】——DaoImpl层(BaseDaoUtilImpl)
java实现人脸识别源码【含测试效果图】——Dao层(IUserDao)
java实现人脸识别源码【含测试效果图】——Dao层(IBaseDaoUtil)
java实现人脸识别源码【含测试效果图】——Dao层(BaseDao)
java实现人脸识别源码【含测试效果图】——实体类(Users)
- java实现人脸识别源码【含测试效果图】——前期准备工作及访问提示
- java实现人脸识别源码【含测试效果图】——实体类(Users)
- java实现人脸识别源码【含测试效果图】——Dao层(BaseDao)
- java实现人脸识别源码【含测试效果图】——Dao层(IBaseDaoUtil)
- java实现人脸识别源码【含测试效果图】——Dao层(IUserDao)
- java实现人脸识别源码【含测试效果图】——DaoImpl层(BaseDaoUtilImpl)
- java实现人脸识别源码【含测试效果图】——DaoImpl层(UserDaoImpl)
- java实现人脸识别源码【含测试效果图】——Service层(IUserService)
- java实现人脸识别源码【含测试效果图】——ServiceImpl层(UserServiceImpl)
- java实现人脸识别源码【含测试效果图】——Servlet层(FaceServlet)
- java实现人脸识别源码【含测试效果图】——前台显示层(index.jsp)
- java实现人脸识别源码【含测试效果图】——前台页面层(login.jsp)
- 自动化测试前期准备工作
- 网站构思及前期准备工作
- java实现邮件发送准备工作(前期配置)
- 实现右下角弹出渐隐渐现提示小窗口 附带 源码及效果图
- Gh0st源码学习(一)前期准备工作
- 使用java底层实现邮件的发送(含测试,源码)
- Map与JavaBean实体类之间的相互转化
- 正则表达式匹配-leetcode Regular Expression Matching
- CodeForces
- POJO简介
- Python f = open("C:\\Users\\geek\\Desktop\\python.txt", "r",encoding= 'utf-8')
- java实现人脸识别源码【含测试效果图】——前期准备工作及访问提示
- Redis中文API
- [iOS UICollectionView拖拽排序] 菜单管理 拖拽/点选/交换位置
- 程序算法之构造法之(体育彩票排列3模拟抽奖程序)
- IDEA + SVN 导入eclipse项目
- HTTP1.0、HTTP1.1和HTTP2.0的区别
- C++11 并发指南四(<future> 详解二 std::packaged_task 介绍)
- Android使用UIL加载圆角图片不显示的问题及解决办法
- HTML和CSS中如何判断ie各版本浏览器