大家好,我是小富~

在我最開始寫文章的時候曾經寫過一篇文章 基于 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

可能會有人抬杠為啥你不自己寫個人臉識別,別問,問就是不會!

目前支持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

   com.arcsoft.face    arcsoft-sdk-face    3.0.0.0    system    ${basedir}/lib/arcsoft-sdk-face-3.0.0.0.jar

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時得到的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了,關注公眾號:程序員內點事,回復【人臉識別】,獲取下載地址,如果有問題隨時咨詢吧。