注意:

看完之后如有不懂,请看:关于人脸和指纹识别共同交流方案,也可以关注微信公众号:雄雄的小课堂,回复:人脸识别群获取群号,群内有直接可以运行的源码可供下载,人脸识别所需的软件群内也有!!!

人脸识别,顾名思义就是刷脸登陆,用户输入用户名,用脸来代替密码进行登陆,就算你是相似度很高的双胞胎也可以正确识别。废话我也不多说了,准备工作大家请往下看:

先看一下做好的截图,界面没有美化,主要是功能,美化界面的花可以弄个高大上的放上去就OK了:

如图:

————————————————————————————————————————————————

——————————————————————————————————————————

登陆的截图:

————————————————————————————————————————————

——————————————————————————————————————————

OK  接下来我们继续往下看:

首先我们创建个数据库:我使用的是sql server,数据库脚本如下:

USE [master]
GO
/****** Object:  Database [faceDB]    Script Date: 2017-09-26 11:18:39 ******/
CREATE DATABASE [faceDB]CONTAINMENT = NONEON  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%)
GO
ALTER DATABASE [faceDB] SET COMPATIBILITY_LEVEL = 110
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [faceDB].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [faceDB] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [faceDB] SET ANSI_NULLS OFF
GO
ALTER DATABASE [faceDB] SET ANSI_PADDING OFF
GO
ALTER DATABASE [faceDB] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [faceDB] SET ARITHABORT OFF
GO
ALTER DATABASE [faceDB] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [faceDB] SET AUTO_CREATE_STATISTICS ON
GO
ALTER DATABASE [faceDB] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [faceDB] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [faceDB] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [faceDB] SET CURSOR_DEFAULT  GLOBAL
GO
ALTER DATABASE [faceDB] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [faceDB] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [faceDB] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [faceDB] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [faceDB] SET  DISABLE_BROKER
GO
ALTER DATABASE [faceDB] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [faceDB] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [faceDB] SET TRUSTWORTHY OFF
GO
ALTER DATABASE [faceDB] SET ALLOW_SNAPSHOT_ISOLATION OFF
GO
ALTER DATABASE [faceDB] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [faceDB] SET READ_COMMITTED_SNAPSHOT OFF
GO
ALTER DATABASE [faceDB] SET HONOR_BROKER_PRIORITY OFF
GO
ALTER DATABASE [faceDB] SET RECOVERY FULL
GO
ALTER DATABASE [faceDB] SET  MULTI_USER
GO
ALTER DATABASE [faceDB] SET PAGE_VERIFY CHECKSUM
GO
ALTER DATABASE [faceDB] SET DB_CHAINING OFF
GO
ALTER DATABASE [faceDB] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF )
GO
ALTER DATABASE [faceDB] SET TARGET_RECOVERY_TIME = 0 SECONDS
GO
EXEC sys.sp_db_vardecimal_storage_format N'faceDB', N'ON'
GO
USE [faceDB]
GO
/****** Object:  Table [dbo].[users]    Script Date: 2017-09-26 11:18:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE 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]GO
SET ANSI_PADDING OFF
GO
INSERT [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]
GO
ALTER DATABASE [faceDB] SET  READ_WRITE
GO

下面附带一张表的结构图,有的人可能不是用的sqlserver,用其他数据库的童鞋们只需按照这个格式就可以了!


数据库建好之后我们导入下所用到的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)

——————————————————2018.05.13更新———————————————————————

本次更新内容:打开摄像头在原有的火狐基础上新加360浏览器个谷歌浏览器,IE暂且不支持

在index.js中,将这段代码:

//  支持浏览器  谷歌,火狐,360,欧朋//navigator.getUserMedia这个写法在Opera中好像是navigator.getUserMedianowif (navigator.getUserMedia) {navigator.getUserMedia(videoObj, function (stream) {video.src = stream;video.play();}, errBack);} else if (navigator.webkitGetUserMedia) {navigator.webkitGetUserMedia(videoObj, function (stream) {video.src = window.URL.createObjectURL(stream);video.play();}, errBack);} else if (navigator.mozGetUserMedia){navigator.mozGetUserMedia(videoObj, function (stream) {video.src = window.URL.createObjectURL(stream);video.play();}, errBack);}

替换成:

//  支持浏览器  谷歌,火狐,360,欧朋//navigator.getUserMedia这个写法在Opera中好像是navigator.getUserMedianowif (navigator.getUserMedia) {navigator.getUserMedia(videoObj, function (stream) {//谷歌MediaStreamTrack=typeof stream.stop==='function'?stream:stream.getTracks()[1];video.src=(window.URL).createObjectURL(stream);video.play();}, errBack);} else if (navigator.webkitGetUserMedia) {//360navigator.webkitGetUserMedia(videoObj, function (stream) {MediaStreamTrack=stream.getTracks()[1];video.src=(window.webkitURL).createObjectURL(stream);video.play();}, errBack);} else if (navigator.mozGetUserMedia){//火狐navigator.mozGetUserMedia(videoObj, function (stream) {video.src = window.URL.createObjectURL(stream);15715377670video.play();}, errBack);}

替换完成即可,其他的不要乱动,可能360和谷歌浏览器默认是禁用摄像头的,先看360浏览器的,点击一下上面的这个标志:

然后:

一定要选第一个,我当时默认的是选择的第二个,捣鼓了很久很久。

谷歌浏览器中:

然后设置成第一个:

注意:360,谷歌或者火狐。在调用摄像头的时候不要同时调用,否则会失效的!!!

——————————————————2018.05.27更新———————————————————————

更新内容:新增活体检测识别,详细请前往: 人脸识别活体检测测试案例

——————————————————2018.06.23更新———————————————————————

更新内容:活体检测之张张嘴和眨眨眼源码:人脸识别活体检测之眨眨眼和张张嘴

——————————————————2018.11.18更新———————————————————————

更新内容:关于人脸和指纹识别共同交流方案

——————————————————2019.07.19更新———————————————————————

更新内容:如果打不开摄像头,并且报错:

Failed to execute 'createObjectURL' on 'URL': No function was found that matched the signature provided.

只需要将此处的代码:

if (navigator.getUserMedia) {navigator.getUserMedia(videoObj, function (stream) {//谷歌MediaStreamTrack=typeof stream.stop==='function'?stream:stream.getTracks()[1];video.src=window.URL.createObjectURL(stream);video.play();}, errBack);} 

替换成:

 if (navigator.getUserMedia) {navigator.getUserMedia(videoObj, function (stream) {//谷歌MediaStreamTrack=typeof stream.stop==='function'?stream:stream.getTracks()[1];try{video.src=window.URL.createObjectURL(stream);}catch(e){console.log(e);video.srcObject = stream;}video.play();}, errBack);} 

成功运行,摄像头打开,正常使用!

java实现人脸识别源码【含测试效果图】——前期准备工作及访问提示相关推荐

  1. java实现人脸识别源码【含测试效果图】——DaoImpl层(BaseDaoUtilImpl)

    /*** */ package org.dao.impl;import java.sql.ResultSet; import java.sql.SQLException; import java.ut ...

  2. java实现人脸识别源码【含测试效果图】——Dao层(BaseDao)

    package org.dao;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedS ...

  3. java实现人脸识别源码【含测试效果图】——ServiceImpl层(UserServiceImpl)

    /** * @Title: BaseServiceImpl.java * @Package org.service.impl * @Description: TODO该方法的主要作用: * @auth ...

  4. java实现人脸识别源码【含测试效果图】——Service层(IUserService)

    /** * @Title: BaseService.java * @Package org.service * @Description: TODO该方法的主要作用: * @author A18ccm ...

  5. java实现人脸识别源码【含测试效果图】——DaoImpl层(UserDaoImpl)

    /** * @Title: UserDaoImpl.java * @Package org.dao.impl * @Description: TODO该方法的主要作用: * @author A18cc ...

  6. java实现人脸识别源码【含测试效果图】——Dao层(IUserDao)

    /** * @Title: IUserDao.java * @Package org.dao * @Description: TODO该方法的主要作用: * @author A18ccms A18cc ...

  7. java实现人脸识别源码【含测试效果图】——实体类(Users)

    /** * @Title: Users.java * @Package org.entity * @Description: TODO该方法的主要作用: * @author A18ccms A18cc ...

  8. java实现人脸识别源码【含测试效果图】——Dao层(IBaseDaoUtil)

    /*** */ package org.dao;/*** * * 项目名称:test_face_photo * 类名称:IBaseDaoUtil * 类描述: 共用接口 * 创建人:Mu Xiongx ...

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

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

  10. Android园区部队人脸识别源码门禁项目讲解

    Android园区部队人脸识别源码门禁项目讲解 这边搞人脸识别相关项目有一段时间,今天抽时间讲述一个经典的人脸识别项目:部队人脸识别门禁系统. 大家都知道部队对人员管理安全要求是相当高的,很多保密的技 ...

最新文章

  1. 字节总监的开发手记,知乎5000+点赞!
  2. 选什么专业,最容易拿下互联网大厂 Offer?三个支付宝新人来支招
  3. Openfire Server presence(在线状态)消息处理流程
  4. 4g通信模块怎么连接sim卡_你好eSIM,再见SIM卡
  5. MongoDB 5.0新特性概览
  6. 迅为I.MX6Q开发板配不同分辨率不同尺寸液晶屏幕
  7. 《Improving Langugage Understanding by Generative Pre-Tranining》 —— GPT
  8. 使用LD链接时候文件的顺序
  9. oracle ssl jdbc 架构,我与数据库的JDBC连接是否使用SSL?
  10. 软考中级网络工程师学习笔记(知识点汇总)详细版本
  11. Sum of the Line UPC5222 (容斥)
  12. Android完美实现kitkat透明导航效果
  13. python爬虫实践之下载轻音乐
  14. 在这个五月《安装Linux》简直易如反掌
  15. C++时间戳time_t和时间结构体tm
  16. erp 计算机语言,erp开发用什么语言
  17. word使用计算机题,巧用Word编题库
  18. 单应性矩阵H和相机姿态参数R和T关系
  19. 完美黑苹果-蓝牙wifi-os10.15
  20. Qt输出4位大字十六进制,不足4位左边补0

热门文章

  1. Origin 软件去除demo 水印
  2. PHP新闻管理系统(包括前台后台)
  3. 路由模式 -- ADSL账号密码拨号
  4. 中职c语言课程教学标准,C语言课程标准.doc
  5. matlab神经网络训练方法,matlabrbf神经网络工具箱
  6. 格式化的硬盘数据恢复,硬盘格式化了怎么恢复数据恢复
  7. Android知识大纲梳理
  8. PMP教程第6版中文 网盘下载
  9. p2p服务器连接状态,P2P网络老是连接不上怎么回事
  10. 模式识别(3)-SVM分类算法