千呼万唤,Web人脸识别登录完整版来了,这样式我爱了

人工智能 人脸识别
整个功能的逻辑很简单,前端调起摄像头,识别到人脸后拍照上传到后台,后端SDK识别出图片中的人脸特征后,与数据库内的用户人脸特征做比对,比对成功(相似度在0.8~1之间即算同一个人)登录,如识别到人脸但数据库内未比对成功则视为新用户注册。

 [[436944]]

本文转载自微信公众号「程序员内点事」,作者程序员内点事。转载本文请联系程序员内点事公众号。

在我最开始写文章的时候曾经写过一篇文章 基于 Java 实现的人脸识别功能,因为刚开始码字不知道写点什么,就简单弄了个人脸识别的Demo。

但让我没想到的是,在过去的一年里有好多好多粉丝加我好友咨询这个小demo,因为里边有点小bug,导致一些新手朋友不能成功启动。

从此我就开启不厌其烦的解答各种疑问,不过我精力毕竟有限,最后实在回答不过来,干脆弄了个群粉丝互相分享经验。

问题大面积出现的时候我就想过再出一个完整版的demo,可家里工作一大堆事搞得一点精力都没有,一直拖到了现在,正好现在把这个人脸识别登录功能用在了自己的项目上,借此机会分享出来了,这次尽可能不给大家留(埋)bug 哈哈哈 。

具体操作之前先看下成品的效果,线上预览地址:https://fire100.top,这里大家可以放心,不会收集面部图片,只是提取了面部特征,并没有上传云端。下边我们来做个演示看看效果,识别速度和成功率还是不错的。

功能流程

整个功能的逻辑很简单,前端调起摄像头,识别到人脸后拍照上传到后台,后端SDK识别出图片中的人脸特征后,与数据库内的用户人脸特征做比对,比对成功(相似度在0.8~1之间即算同一个人)登录,如识别到人脸但数据库内未比对成功则视为新用户注册。

注意:如果要在线上应用,必须要使用https才能调起摄像头,本地测试没有限制。

申请SDK

启动项目之前先做一点准备工作,因为使用的是三方的人脸识别SDK,所以要先在平台申请一个账号,然后在下载对应版本的SDK。

“官网地址:https://ai.arcsoft.com.cn/ucenter/resource/build/index.html#/login

可能会有人抬杠为啥你不自己写个人脸识别,别问,问就是不会!

目前支持Linux、Windows、IOS、Android版本,每个实名认证的账号可以激活100台设备,换句话说就是同一个账号申请的SDK可以在100个设备上运行,一般情况下够用了。

下载的SDK包目录结构中libs最为重要,samplecode里有示例代码,doc有API文档。我们需要的是libs里边的arcsoft-sdk-face-3.0.0.0.jar、和三个对应平台的引擎文件.dll或者.so后缀的文件。

项目配置

项目本身是springboot + vue 前后端分离的,但为了小伙伴们开箱即用,我把这个功能前后端整合在一起,再用个 jpa做持久化,表也不用自己建了,给大家省点时间。

使用SDK的时候遇到过一点小坑,所以下边说的详细一点

首先在springboot启动类所在项目根目录下创建一个lib目录,将SDK中解压出的arcsoft-sdk-face-3.0.0.0.jar放进去,pom.xml文件中引入这个 Jar。

  1. <dependency> 
  2.    <groupId>com.arcsoft.face</groupId> 
  3.     <artifactId>arcsoft-sdk-face</artifactId> 
  4.     <version>3.0.0.0</version> 
  5.     <scope>system</scope> 
  6.     <systemPath>${basedir}/lib/arcsoft-sdk-face-3.0.0.0.jar</systemPath> 
  7. </dependency> 

 

maven打包配置要特别注意一点,一定要加上includeSystemScope,这样 maven 打包时会将外部引入的jar包(比如在根目录下或resource文件下新加外部jar包)打包到项目jar中,服务器上项目才能运行。

不加此配置,本地可以运行,因为本地可以再lib下找到外部包,但是服务器上jar中是没有的。

  1. <plugin> 
  2.     <groupId>org.springframework.boot</groupId> 
  3.     <artifactId>spring-boot-maven-plugin</artifactId> 
  4.     <version>${spring-boot.version}</version> 
  5.     <configuration> 
  6.         <includeSystemScope>true</includeSystemScope> 
  7.         <fork>true</fork> 
  8.         <mainClass>com.firebook.FireBookApplication</mainClass> 
  9.         <skip>false</skip> 
  10.     </configuration> 
  11. </plugin> 

 

 

application.yml 文件的配置更简单,搞个数据库存放人脸特征数据,填写申请SDK时得到的appId 和 sdkKey,以及 path 为存放引擎文件.dll或者.so后缀的文件路径。

  1. spring: 
  2.   datasource: 
  3. #    type: com.zaxxer.hikari.HikariDataSource 
  4.     driver-class-name: com.mysql.cj.jdbc.Driver 
  5.     url: jdbc:mysql://127.0.0.1:3306/face?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai 
  6.     username: root 
  7.     password: 123456 
  8. # 人脸识别-windows 
  9. face: 
  10.   appId: #********************* 
  11.   sdkKey: #********************* 
  12.   path: D://face 

配置好这些直接执行FireControllerApplication就可以了,访问:127.0.0.1:8081/login/face。

这里源码我就不大段大段往出贴了,感兴趣的小伙伴自行获取链接下载源码玩玩吧。

 

责任编辑:武晓燕 来源: 程序员内点事
相关推荐

2009-11-25 08:52:07

Web应用IE应用

2014-09-15 21:46:45

华为SDN软件定义网络

2014-12-25 10:45:09

微信平台windows

2009-01-20 13:57:02

网络硬盘Google云计算

2010-04-16 08:51:24

Silverlight

2012-02-27 15:34:27

英特尔Cedar Trail凌动处理器

2016-05-12 16:25:50

有道云

2023-04-10 07:10:29

WebGPU浏览器JavaScript

2010-01-08 11:15:07

Intel 32nm处

2020-05-12 10:15:36

5G运营商技术

2023-08-20 22:18:14

字节测试邀请码

2022-11-21 10:11:37

GPT-4模型

2023-03-16 18:30:55

GPT-4ChatGPT

2018-07-26 10:46:29

猫奴

2021-10-08 09:15:34

5G商用运营商

2021-01-14 07:44:21

JS 现状CSS

2013-05-14 10:24:30

2022-02-12 17:29:16

LogoChrome设计更新

2022-04-26 14:33:21

鸿蒙操作系统

2020-11-11 00:40:35

云计算混合云私有云
点赞
收藏

51CTO技术栈公众号