Nodejs開(kāi)發(fā)人臉識(shí)別系統(tǒng)-教你實(shí)現(xiàn)高大上的人工智能

一、緣起緣生

前段時(shí)間有個(gè)H5很火,上傳個(gè)頭像就可以顯示自己穿軍裝的樣子,無(wú)意中看到了一篇帖子叫全民刷軍裝背后的AI技術(shù)及簡(jiǎn)單實(shí)現(xiàn),里面提到了百度AI,我自己也試了一下下,效果就醬紫。

當(dāng)然這個(gè)東西并不實(shí)用,只是純粹娛樂(lè)而已,但是本人想是否可以通過(guò)這個(gè)技術(shù),實(shí)現(xiàn)那種人臉識(shí)別驗(yàn)證,來(lái)驗(yàn)證如會(huì)議刷臉簽到、網(wǎng)站刷臉登錄這種高大上的技術(shù)。于是說(shuō)干就干,花了將近一周時(shí)間完成了一個(gè)初步的DEMO。


二、技術(shù)儲(chǔ)備

要實(shí)現(xiàn)這個(gè)系統(tǒng),本人認(rèn)為需要涉及到以下技術(shù)知識(shí)點(diǎn),這些都是需要提前學(xué)習(xí)和積累的:

1、Nodejs

2、Express(基于后端開(kāi)發(fā))

3、Vue-Cli(基于前端開(kāi)發(fā),Vue的腳手架,沒(méi)明白為啥叫腳手架o(╯□╰)o )

4、百度AI人臉識(shí)別SDK,點(diǎn)擊學(xué)習(xí)地址

不得不說(shuō)百度AI在人工智能方面確實(shí)比其他幾個(gè)大佬做的厚道,接口全面開(kāi)放,而且還是免費(fèi),人家估計(jì)都在起步階段,而百度已經(jīng)甩了好幾條街。。。

在網(wǎng)上學(xué)習(xí)了一些資料,尤其是仔細(xì)分析了百度SDK以后,接下來(lái)就開(kāi)始開(kāi)發(fā)啦。


三、開(kāi)發(fā)步驟

1、搭建vue-cli腳手架,主要用于快速搭建一個(gè)網(wǎng)站,安裝方法


2、在router目錄中配置index.js頁(yè)面路由,方便多個(gè)頁(yè)面之間交互,如圖:

設(shè)置了兩個(gè)頁(yè)面


3、新建兩個(gè)頁(yè)面到pages目錄,其中Home是主頁(yè)面,用于展示人臉識(shí)別;Main為輸入頁(yè)面,用于錄入人員信息。


4、導(dǎo)入百度AI的SDK,都放在src目錄中,太多了自己看吧,官方文檔中有說(shuō)明


5、制作Home頁(yè)面,原理主要是設(shè)置了一個(gè)getVideo方法開(kāi)啟攝像頭(前提是你的電腦需要有設(shè)備),然后通過(guò)takePhoto方法獲得當(dāng)前視頻中的一幀圖片,打印到canvas中(canvas支持打印繪畫、圖片、視頻)。

DOM結(jié)構(gòu)
getVideo方法


6、制作Main頁(yè)面,這個(gè)頁(yè)面就比較簡(jiǎn)單啦,只設(shè)置了兩個(gè)輸入框和一個(gè)上傳圖片按鈕,先湊合著用吧。主要用于人員信息錄入,需要先將人員相關(guān)信息建立檔案,否則無(wú)法識(shí)別。


7、說(shuō)了這么一堆,都是前端的東西,那么怎么和后端實(shí)現(xiàn)互通呢?別急,看看這里先

里面有方法教你怎么去模擬一個(gè)接口數(shù)據(jù)并訪問(wèn),其他接口也可以這樣寫,以此類推。

個(gè)人理解有個(gè)文件很重要,它就是build目錄中的webpack.dev.conf.js文件,主要用于開(kāi)發(fā)環(huán)境下的所有配置,因此如果只是開(kāi)發(fā)環(huán)境下,后臺(tái)訪問(wèn)和配置相關(guān)都可以寫到這個(gè)文件中。

一個(gè)接口成型


8、測(cè)試調(diào)試,經(jīng)過(guò)漫長(zhǎng)的開(kāi)發(fā)和排坑,終于有一定的成效啦!


四、發(fā)布部署,前端后端,傻傻分不清

在項(xiàng)目測(cè)試沒(méi)問(wèn)題需要發(fā)布的時(shí)候,遇到了一個(gè)問(wèn)題,由于發(fā)布需要使用npm run build,文件打包好上傳到服務(wù)器后所有接口會(huì)報(bào)錯(cuò),無(wú)法正常訪問(wèn),天啊擼,難道之前做的都是白做的么?后來(lái)才發(fā)現(xiàn),Vue-Cli主要還是用于渲染頁(yè)面的,無(wú)法承載搭建后端服務(wù)接口,因此之前才會(huì)說(shuō)只能在開(kāi)發(fā)環(huán)境下使用。

相信很多新手都會(huì)遇到這個(gè)問(wèn)題,前端后端會(huì)傻傻分不清,當(dāng)需要前后端分離的時(shí)候,那么如何解決這個(gè)問(wèn)題呢?

這個(gè)時(shí)候就可以就需要用到express啦,它是基于Node.js 平臺(tái)的極簡(jiǎn)、靈活的 web 應(yīng)用開(kāi)發(fā)框架。而我只是需要搭建一個(gè)接口服務(wù),簡(jiǎn)單幾行代碼就可以搭建服務(wù)了,so easy??!

于是乎新建了一個(gè)項(xiàng)目作為服務(wù)端,將百度AI的項(xiàng)目獨(dú)立出來(lái),并建立server.js,把之前寫好的方法copy過(guò)來(lái)即可,如圖:



五、快點(diǎn)入坑吧

總結(jié)來(lái)說(shuō)這個(gè)項(xiàng)目期間還是經(jīng)歷了好多次的糾結(jié),有些問(wèn)題報(bào)錯(cuò)略感奇葩了,但是不解決又覺(jué)得不舒服,只能入坑越入越深,如果你也想試試歡迎加入,坑坑更健康。

比如會(huì)出現(xiàn)跨域的問(wèn)題,因?yàn)槭乔昂蠖朔蛛x,所以會(huì)出現(xiàn)端口號(hào)或者地址不一樣情況,這樣就會(huì)出現(xiàn)跨域。解決方法就是驗(yàn)證跨域CORS問(wèn)題,在server.js文件中設(shè)置跨域的訪問(wèn)即可,如圖:


六、效果演示

1、信息錄入地址(上傳一張自拍喲):歡迎進(jìn)入(進(jìn)不了可復(fù)制鏈接:https://www.lejuhb.com/myface/#/main?)

2、人臉識(shí)別地址:歡迎進(jìn)入(進(jìn)不了可復(fù)制鏈接:https://www.lejuhb.com/myface/)

注意:必須使用攝像頭和最新谷歌瀏覽器,如果第一次無(wú)法識(shí)別,請(qǐng)點(diǎn)擊瀏覽器右上角小圖標(biāo),點(diǎn)擊加載不安全的腳本完成,如圖:

其實(shí)這也是個(gè)坑
頁(yè)面真的很簡(jiǎn)單吧!


效果不錯(cuò),就不上鏡了哈哈哈
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,913評(píng)論 25 709
  • 2017年,全球手機(jī)用戶預(yù)計(jì)將發(fā)到26億之多,如此龐大的數(shù)量毫無(wú)疑問(wèn)的帶動(dòng)了網(wǎng)絡(luò)購(gòu)物的消費(fèi)。 2016年阿里巴巴年...
    萬(wàn)代貿(mào)易李建斌閱讀 927評(píng)論 0 0
  • 人是不理智的。你人生至今做過(guò)的所有決定,大多未經(jīng)過(guò)真正的思考,當(dāng)時(shí)可能極度糾結(jié)、反復(fù)推敲,但是結(jié)果往往都會(huì)遵從預(yù)先...
    四個(gè)二帶倆王閱讀 706評(píng)論 0 0
  • 愛(ài)情 是每個(gè)女生心里的渴望。于是,初中時(shí)代早已談戀愛(ài)??粗麄兪譅渴郑瑩肀?.周圍的女生早已開(kāi)始紛紛討論。女生渴望...
    雅妍閱讀 447評(píng)論 0 2

友情鏈接更多精彩內(nèi)容