写点什么

3 分钟搞定 web 人脸识别登录,这样式爱了

  • 2021 年 11 月 24 日
  • 本文字数:1850 字

    阅读完需:约 6 分钟

3分钟搞定 web人脸识别登录,这样式爱了

大家好,我是小富~


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


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



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


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



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


功能流程

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


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


https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8c47626d95004f1c9be9d9a5fee55500~tplv-k3u1fbpfcp-zoom-1.image

申请 SDK

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


SDK地址


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


目前支持LinuxWindowsIOSAndroid版本,每个实名认证的账号可以激活 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



<dependency>   <groupId>com.arcsoft.face</groupId>    <artifactId>arcsoft-sdk-face</artifactId>    <version>3.0.0.0</version>    <scope>system</scope>    <systemPath>${basedir}/lib/arcsoft-sdk-face-3.0.0.0.jar</systemPath></dependency>
复制代码


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


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


<plugin>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-maven-plugin</artifactId>    <version>${spring-boot.version}</version>    <configuration>        <includeSystemScope>true</includeSystemScope>        <fork>true</fork>        <mainClass>com.firebook.FireBookApplication</mainClass>        <skip>false</skip>    </configuration></plugin>
复制代码


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


spring:  datasource:#    type: com.zaxxer.hikari.HikariDataSource    driver-class-name: com.mysql.cj.jdbc.Driver    url: jdbc:mysql://127.0.0.1:3306/face?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai    username: root    password: 123456# 人脸识别-windowsface:  appId: #*********************  sdkKey: #*********************  path: D://face
复制代码


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


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

源码下载

web 人脸识别登录的完整源码已经上传到Github了,源码地址 ,如果有问题随时咨询吧。



发布于: 2021 年 11 月 24 日阅读数: 45
用户头像

不积跬步,无以至千里 2018.07.03 加入

公众号-程序员内点事,一个技术传播者

评论

发布
暂无评论
3分钟搞定 web人脸识别登录,这样式爱了