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)


阅读全文
3 0
原创粉丝点击