您好,登錄后才能下訂單哦!
這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)NodeJS中怎么實現(xiàn)一個人臉識別功能,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
既然百度提供了Node.js版的SDK,那我們可以使用SDK先快速進入開發(fā)。首先進入百度AI:
https://ai.baidu.com/
登錄成功進入控制臺,點擊左側(cè)人臉識別,進入開始創(chuàng)建應(yīng)用
創(chuàng)建成功后進入管理應(yīng)用,可以得到開發(fā)需要的APPID,API KEY,SECRET KEY,得到這三個參數(shù)值之后我們?nèi)ハ螺d一份Node.js版本的人臉識別SDK:
https://ai.baidu.com/sdk#bfr
準備工作全部完成,我們接下來新建一個Node.js項目。然后將解壓后的SDK放進Node項目中。
可以看到我們已經(jīng)將解壓后的SDK放到我們的項目中,現(xiàn)在在終端進入SDK,然后安裝SDK所需的依賴,命令為:
npm install
然后回到項目主目錄,將整個SDK作為依賴,在主目錄安裝依賴,命令為:
npm install baidu-aip.sdk
到這里引入SDK到我們本地項目就完成了,接下來我們來看下SDK文檔:
我們可以先寫個接口測試下第一個接口:人臉檢測
首先,我們將我們應(yīng)用的三個秘鑰保存在config.js中
創(chuàng)建一個client對象,調(diào)用服務(wù)接口進行使用。
發(fā)送網(wǎng)絡(luò)請求SDK中已經(jīng)對request模塊進行了封裝,我們可以根據(jù)自己需要對request的參數(shù)進行設(shè)置。
接下來我們可以進行人臉檢測的調(diào)用,SDK已經(jīng)將接口給我們封裝好了,人臉檢測的接口分為帶可選參數(shù)與不帶可選參數(shù)。有什么區(qū)別呢?我們可以看下接口請求參數(shù):
可以看到我們必傳的參數(shù)有兩個:image和imageType:
image就是圖片可以為url, base64以及FACE_TOKEN而imageType就是圖片類型,可選值有URL, BASE64, FACE_TOKEN。
其他三個參數(shù)是可選的參數(shù),所以我們先來看看不帶可選參數(shù)的接口如何進行調(diào)用:
client.detect(image, imageType)
我們調(diào)用該方法,傳參image為網(wǎng)絡(luò)圖片url以及imageType為URL,看看會有什么效果
調(diào)用下接口我們可以看到對圖片進行了解析,返回了一系列數(shù)據(jù)
這么多參數(shù)究竟干嘛的呢?我們可以看下官方文檔對返回參數(shù)的說明:
因為返回參數(shù)過多,我就不一一截屏,這里貼下Node版SDK文檔,可以自行查看:
https://cloud.baidu.com/doc/FACE/Face-Node-SDK.html#.E4.BA.BA.E8.84.B8.E6.A3.80.E6.B5.8B
有了文檔我們就可以知道返回參數(shù)的意思了
face_num代表在圖片中檢測到一張人臉face_list就包含人臉的具體信息 location對人臉相對于圖片位置進行了定位,客戶端就可以根據(jù)位置信息對人臉進行特效的展示。 face_token就是圖片解析生成的一個唯一標識的字符串,解析image可以直接傳入face_token face_probability代表圖片是一張人臉的可能程度,1為概率最大 angle則為人臉旋轉(zhuǎn)程度
解析結(jié)果會返回人臉相對于圖片的定位,客戶端就可以針對位置信息對人臉進行聚焦等操作。第二個接口可選參數(shù)又是什么樣的呢?我們可以再看看剛才請求參數(shù):
我們有三個可選傳的參數(shù):
face_field:指定返回信息max_face_num:可檢測最多人臉數(shù)量face_type:照片類型
我們調(diào)用detect方法就需要多傳options參數(shù),方法為:
client.detect(image, imageType, options)
我們使用該方法指定返回年齡,指定最大檢測人臉為2,照片類型為生活照
我們可以看下運行效果:
我們可以看到返回多了一個age字段,解析返回的預(yù)估年齡。
第一個接口到這里沒問題了,但是會有一個疑問?我們就是調(diào)用了detect方法,為什么就直接返回解析信息呢?其實完整的流程應(yīng)該是:
通過appID及api_secret獲取access_token憑證發(fā)起http請求人臉檢測接口,檢測成功返回數(shù)據(jù)
但是獲取access_token以及發(fā)起http請求這部分SDK其實都已經(jīng)封裝完成,所以我們可以直接使用。我們可以在剛才調(diào)用封裝的http請求里面打印請求參數(shù),然后再次發(fā)起請求:
我們會看到請求人臉檢測的接口已經(jīng)完全封裝好了,你只需要調(diào)用detect方法,中間的步驟SDK全部幫你進行處理了。
人臉注冊
然后接下來我們來看看人臉注冊接口,人臉注冊該人臉就會與我們設(shè)置的groupId與userId進行綁定,人臉注冊可以調(diào)用方法:
client.addUser(image, imageType, groupId, userId)
我們先看看發(fā)起請求需要攜帶的參數(shù)列表:
前兩個參數(shù)就不多說了,group_id是組id,user_id為用戶id。我們可以寫個接口看下效果:
我們調(diào)用client.addUser()方法,進行人臉注冊,我們看下運行效果:
老規(guī)矩,貼下文檔關(guān)于返回參數(shù)的解釋:
與人臉解析一樣,選傳參數(shù)可以對用戶資料,圖片質(zhì)量等參數(shù)進行選傳,注冊成功該人臉就會綁定傳的用戶資料。這里就不過多解釋了,具體可以看下文檔自行測試。
人臉搜索
上一個接口我們注冊了一個人臉,我們可以調(diào)用人臉搜索接口看看是否能搜索到該人臉。首先看看人臉搜索需要調(diào)用的方法:
client.search(image, imageType, groupIdList)
這個方法需要解釋的第三個參數(shù),在指定的組里進行搜索人臉,如果同時在多個組里搜索就用,隔開。老規(guī)矩我們先看下調(diào)用本方法的請求參數(shù)列表:
我們使用不帶選傳參數(shù)調(diào)用人臉搜索接口測試:
接下來調(diào)用下看下人臉搜索是否有效果:
可以看到我們在組1中找到了該人臉,我們可以測試下如果在不存在該人臉的組中查詢會有什么效果呢?
上述就是小編為大家分享的NodeJS中怎么實現(xiàn)一個人臉識別功能了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。