摘要:但让我没想到的是,在过去的一年里有好多好多粉丝加我好友咨询这个小,因为里边有点小,导致一些新手朋友不能成功启动。从此我就开启不厌其烦的解答各种疑问,不过我精力毕竟有限,最后实在回答不过来,干脆弄了个群粉丝互相分享经验。
大家好,我是小富~
在我最开始写文章的时候曾经写过一篇文章 基于 Java 实现的人脸识别功能,因为刚开始码字不知道写点什么,就简单弄了个人脸识别的Demo。
但让我没想到的是,在过去的一年里有好多好多粉丝加我好友咨询这个小demo,因为里边有点小bug,导致一些新手朋友不能成功启动。
从此我就开启不厌其烦的解答各种疑问,不过我精力毕竟有限,最后实在回答不过来,干脆弄了个群粉丝互相分享经验。
问题大面积出现的时候我就想过再出一个完整版的demo,可家里工作一大堆事搞得一点精力都没有,一直拖到了现在,正好现在把这个人脸识别登录功能用在了自己的项目上,借此机会分享出来了,这次尽可能不给大家留(埋)bug 哈哈哈 。
具体操作之前先看下成品的效果,线上预览地址:https://fire100.top,这里大家可以放心,不会收集面部图片,只是提取了面部特征,并没有上传云端。下边我们以冰冰来做个演示看看效果,识别速度和成功率还是不错的。
整个功能的逻辑很简单,前端调起摄像头,识别到人脸后拍照上传到后台,后端SDK识别出图片中的人脸特征后,与数据库内的用户人脸特征做比对,比对成功(相似度在0.8~1之间即算同一个人)登录,如识别到人脸但数据库内未比对成功则视为新用户注册。
注意:如果要在线上应用,必须要使用https才能调起摄像头,本地测试没有限制。
启动项目之前先做一点准备工作,因为使用的是三方的人脸识别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
。
<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中是没有的。
org.springframework.boot spring-boot-maven-plugin ${spring-boot.version} true true com.firebook.FireBookApplication false
application.yml
文件的配置更简单,搞个数据库存放人脸特征数据,填写申请SDK时得到的appId
和 sdkKey
,以及 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
了,关注公众号:程序员内点事,回复【人脸识别】,获取下载地址,如果有问题随时咨询吧。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/125055.html
摘要:打包配置要特别注意一点,一定要加上,这样打包时会将外部引入的包比如在根目录下或文件下新加外部包打包到项目中,服务器上项目才能运行。 大家好,我是小富~在我最开始写文章的时候曾经写过一篇文章 基于 Java 实现的人脸识别功能,因为刚开始码字不知道写点什么,就简单弄了个人脸识别的Demo。但让我没想到的是,在过去...
摘要:二跨域解决方案原理利用标签没有跨域限制的漏洞,网页可以得到从其他来源动态产生的数据。使用反向代理实现跨域,是最简单的跨域方式。 前言 前后端数据交互经常会碰到请求跨域,什么是跨域,以及有哪几种跨域方式,这是本文要探讨的内容。 本文完整的源代码请猛戳github博客,纸上得来终觉浅,建议动手敲敲代码 一、什么是跨域? 1.什么是同源策略及其限制内容? 同源策略是一种约定,它是浏览器最核心...
摘要:二跨域解决方案原理利用标签没有跨域限制的漏洞,网页可以得到从其他来源动态产生的数据。使用反向代理实现跨域,是最简单的跨域方式。 前言 前后端数据交互经常会碰到请求跨域,什么是跨域,以及有哪几种跨域方式,这是本文要探讨的内容。 本文完整的源代码请猛戳github博客,纸上得来终觉浅,建议动手敲敲代码 一、什么是跨域? 1.什么是同源策略及其限制内容? 同源策略是一种约定,它是浏览器最核心...
摘要:本文基于环境,采用为基础来构建实时人脸检测与识别系统,探索人脸识别系统在现实应用中的难点。对于人脸检测方法,效果好于的方法,但是检测力度也难以达到现场应用标准。本文中,我们采用了基于深度学习方法的人脸检测系统。 git地址:https://github.com/chenlinzho... 本文主要介绍了系统涉及的人脸检测与识别的详细方法,该系统基于python2.7.10/opencv...
摘要:本文基于环境,采用为基础来构建实时人脸检测与识别系统,探索人脸识别系统在现实应用中的难点。对于人脸检测方法,效果好于的方法,但是检测力度也难以达到现场应用标准。本文中,我们采用了基于深度学习方法的人脸检测系统。 git地址:https://github.com/chenlinzho... 本文主要介绍了系统涉及的人脸检测与识别的详细方法,该系统基于python2.7.10/opencv...
阅读 2883·2021-11-25 09:43
阅读 2294·2021-11-24 09:39
阅读 2648·2021-09-23 11:51
阅读 1374·2021-09-07 10:11
阅读 1424·2019-08-27 10:52
阅读 1916·2019-08-26 12:13
阅读 3320·2019-08-26 11:57
阅读 1352·2019-08-26 11:31