最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

圖片識別,人臉識別,簽到小程序,借助百度AI智能識別功能

2022-04-20 13:54 作者:編程小石頭  | 我要投稿

一,人臉簽到效果圖

我們做人臉識別簽到,其實(shí)就是要拿識別的人臉和數(shù)據(jù)庫里的人臉對比,相識度大于一定的值,就可以判定成功。


如我們識別的結(jié)果是98.295%,所以這里就可以認(rèn)定為簽到成功

1-1,效果圖

1-1-1,還未簽到

1-1-2,簽到

1-1-3,簽到成功

二,準(zhǔn)備工作

2-1,注冊百度開發(fā)者賬號

我們這里使用了百度的圖片識別技術(shù),所以在使用之前我們要現(xiàn)在注冊百度開發(fā)者賬號,官方地址:https://ai.baidu.com
注冊地址:https://login.bce.baidu.com
至于如何注冊,這里不需要我再教了吧,大家自行注冊就行了。
我們主要用到的是人臉識別技術(shù)

2-2,注冊完記得要實(shí)名下

現(xiàn)在使用百度圖片識別,必須要實(shí)名認(rèn)證下。


根據(jù)自己的情況選擇認(rèn)證方式


學(xué)習(xí)的話,只需要個人認(rèn)證即可。

2-3,創(chuàng)建人臉識別應(yīng)用

我們這里主要使用的是百度的人臉對比功能,就是事先把要識別人的照片存到百度數(shù)據(jù)庫,然后打卡時,讓對應(yīng)的人拍好照,和數(shù)據(jù)庫里存的人臉圖片進(jìn)行對比,相似度達(dá)到一定數(shù)值,比如90%相似度,就可以認(rèn)為識別成功,進(jìn)行簽到即可。


估計(jì)百度是在為后期收費(fèi)做準(zhǔn)備,但是目前還有免費(fèi)資源可以領(lǐng)取。既然可以白piao就先領(lǐng)取免費(fèi)的。即便后期收費(fèi)了,咱們學(xué)習(xí)使用估計(jì)也用不了太多,幾毛錢的估計(jì)就夠咱們學(xué)習(xí)用的了。

人臉識別官方文檔:https://cloud.baidu.com/product/face

點(diǎn)擊免費(fèi)領(lǐng)取資源


既然免費(fèi),當(dāng)然全部領(lǐng)取了啊。


領(lǐng)取完,耐心等待生效即可。如果你在學(xué)習(xí)的時候,不能在免費(fèi)領(lǐng)取了,那就花幾毛錢付費(fèi)下也行的,基本上幾毛錢就夠咱們學(xué)習(xí)使用了。


上面該領(lǐng)的都領(lǐng)完以后,我們就來創(chuàng)建應(yīng)用吧。


默認(rèn)人臉識別相關(guān)的都已經(jīng)勾選了


選個人即可。


創(chuàng)建好以后,下面兩個東西我們后面會用到,知道在哪里即可。

三,接入人臉識別

3-1,官方文檔

我們在自己的小程序里接入人臉識別,就必須去看百度官方的技術(shù)文檔。
文檔地址:https://ai.baidu.com/ai-doc/FACE/Lk37c1tpf
我們這里主要就看這個人臉對比文檔。


官方文檔里并沒有給出小程序里如何調(diào)用的代碼。


所以接下來的學(xué)習(xí)要跟緊石頭哥的腳步,石頭哥手把手的帶大家實(shí)現(xiàn)小程序端的調(diào)用。

3-2,人臉注冊

我們要想實(shí)現(xiàn)人臉識別,就需要一開始先在百度的可視化人臉庫里注冊人臉,要調(diào)用的接口如下。


在調(diào)用這個之前,我們需要先去獲取對應(yīng)的acess_token,所以接下來我們要做的第一步就是獲取acess_token

3-2-1,獲取acess_token

我們后面做的所有操作,基本上都要獲取這個。


所以我把源碼貼出來給到大家,client_id和client_secret記得換成你自己的。

wx.request({ ? ? ?url: 'https://aip.baidubce.com/oauth/2.0/token', ? ? ?data: { ? ? ? ?grant_type: 'client_credentials', ? ? ? ?client_id:, //應(yīng)用的API Key ? ? ? ?client_secret: ?//應(yīng)用的Secret Key ? ? ?}, ? ? ?header: { ? ? ? ?'Content-Type': 'application/json' // 默認(rèn)值 ? ? ?}, ? ? ?success: res => { ? ? ? ?this.setData({ ? ? ? ? ?token: res.data.access_token //獲取到token ? ? ? ?}) ? ? ? ?console.log('獲取到的token', this.data.token) ? ? ?} ? ?})

3-2-2,拍人臉照

第二步和第三步要同時進(jìn)行,所以我把代碼放到下面第三步

3-2-3,注冊人臉到百度人臉庫

我們在拍照以后,獲取到圖片,并通過 wx.getFileSystemManager().readFile()方法把圖片轉(zhuǎn)換為base64,因?yàn)榘俣刃枰@樣格式的數(shù)據(jù)


對應(yīng)的代碼如下:

? ?var that = this; ? ?//拍照 ? ?const ctx = wx.createCameraContext() ? ?ctx.takePhoto({ ? ? ?quality: 'high', ? ? ?success: (res) => { ? ? ? ?that.setData({ ? ? ? ? ?src: res.tempImagePath //獲取圖片 ? ? ? ?}) ? ? ? ?//圖片base64編碼 ? ? ? ?wx.getFileSystemManager().readFile({ ? ? ? ? ?filePath: that.data.src, //選擇圖片返回的相對路徑 ? ? ? ? ?encoding: 'base64', //編碼格式 ? ? ? ? ?success: res => { //成功的回調(diào) ? ? ? ? ? ?that.setData({ ? ? ? ? ? ? ?base64: res.data ? ? ? ? ? ?}) ? ? ? ? ? ?//第三步:上傳人臉進(jìn)行注冊 ? ? ? ? ? ?wx.request({ ? ? ? ? ? ? ? ?url: 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add?access_token=' + that.data.token, ? ? ? ? ? ? ? ?method: 'POST', ? ? ? ? ? ? ? ?data: { ? ? ? ? ? ? ? ? ?image: that.data.base64, ? ? ? ? ? ? ? ? ?image_type: 'BASE64', ? ? ? ? ? ? ? ? ?group_id: 'users', //自己建的用戶組id ? ? ? ? ? ? ? ? ?user_id: app.globalData.userInfo.phone, //學(xué)號 ? ? ? ? ? ? ? ? ?user_info: app.globalData.userInfo.name //存儲學(xué)生姓名 ? ? ? ? ? ? ? ?}, ? ? ? ? ? ? ? ?header: { ? ? ? ? ? ? ? ? ?'Content-Type': 'application/json' // 默認(rèn)值 ? ? ? ? ? ? ? ?}, ? ? ? ? ? ? ? ?success(res) { ? ? ? ? ? ? ? ? ?that.setData({ ? ? ? ? ? ? ? ? ? ?msg: res.data.error_msg ? ? ? ? ? ? ? ? ?}) ? ? ? ? ? ? ? ? ?console.log("人臉注冊返回結(jié)果", res) ? ? ? ? ? ? ? ? ?//做成功判斷 ? ? ? ? ? ? ? ? ?if (that.data.msg == 'SUCCESS') { //微信js字符串使用單引號 ? ? ? ? ? ? ? ? ? ?wx.showToast({ ? ? ? ? ? ? ? ? ? ? ?title: '注冊成功', ? ? ? ? ? ? ? ? ? ? ?icon: 'success', ? ? ? ? ? ? ? ? ? ? ?duration: 2000 ? ? ? ? ? ? ? ? ? ?}) ? ? ? ? ? ? ? ? ? ?// that.registerFace() ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ?}), ? ? ? ? ? ? ?//失敗嘗試 ? ? ? ? ? ? ?wx.showToast({ ? ? ? ? ? ? ? ?title: '請重試', ? ? ? ? ? ? ? ?icon: 'loading', ? ? ? ? ? ? ? ?duration: 500 ? ? ? ? ? ? ?}) ? ? ? ? ?} ? ? ? ?}) ? ? ?} //拍照成功結(jié)束 ? ?}) //調(diào)用相機(jī)結(jié)束

這幾個參數(shù),要記得換成自己的

group_id: 'users', //自己建的用戶組id ? ?user_id: app.globalData.userInfo.phone, //學(xué)號或者用戶電話能唯一標(biāo)識用戶的 ? ?user_info: app.globalData.userInfo.name //存儲用戶姓名

我們注冊完以后,可以在百度人臉庫里看到這條數(shù)據(jù),可以看到我們創(chuàng)建的users表。

3-3,查看人臉庫

我們進(jìn)入百度的控制臺,找到如下的類目


然后點(diǎn)開用戶123,就可以看到他注冊的人臉照片。

四,人臉比對

我們上面注冊好人臉以后,接下來就可以使用人臉打卡功能了。
使用之前還是第一步,獲取acess_token

4-1,獲取acess_token

?// acess_token獲取 ?getTokenInfo() { ? ?var that = this ? ?wx.request({ ? ? ?url: 'https://aip.baidubce.com/oauth/2.0/token', ? ? ?data: { ? ? ? ?grant_type: 'client_credentials', ? ? ? ?client_id: app.globalData.client_id, //應(yīng)用的API Key ? ? ? ?client_secret: app.globalData.client_secret //Secret Key ? ? ?}, ? ? ?header: { ? ? ? ?'Content-Type': 'application/json' // 默認(rèn)值 ? ? ?}, ? ? ?success(res) { ? ? ? ?that.setData({ ? ? ? ? ?token: res.data.access_token //獲取到token ? ? ? ?}) ? ? ? ?console.log(that.data.token) ? ? ?} ? ?}) ?},

4-2,人臉比對

核心代碼如下:

//拍照并編碼 ?takePhoto() { ? ?let that=this ? ?const ctx = wx.createCameraContext() ? ?ctx.takePhoto({ ? ? ?quality: 'high', ? ? ?success: (res) => { ? ? ? ?//圖片base64編碼 ? ? ? ?wx.getFileSystemManager().readFile({ ? ? ? ? ?filePath: res.tempImagePath, //選擇圖片返回的相對路徑 ? ? ? ? ?encoding: 'base64', //編碼格式 ? ? ? ? ?success: res => { //成功的回調(diào) ? ? ? ? ? ?that.signInFace(res.data) ? ? ? ? ?} ? ? ? ?}) ? ? ?} ? ?}) ?}, ?//上傳人臉進(jìn)行 比對 ?signInFace(base64) { ? ?var that = this ? ?if (base64 != "") { ? ? ?wx.request({ ? ? ? ?url: 'https://aip.baidubce.com/rest/2.0/face/v3/search?access_token=' + that.data.token, ? ? ? ?method: 'POST', ? ? ? ?data: { ? ? ? ? ?image: base64, ? ? ? ? ?image_type: 'BASE64', ? ? ? ? ?group_id_list: 'users' //自己建的用戶組id ? ? ? ?}, ? ? ? ?header: { ? ? ? ? ?'Content-Type': 'application/json' // 默認(rèn)值 ? ? ? ?}, ? ? ? ?success(res) { ? ? ? ? ?console.log("人臉對比返回結(jié)果", res) ? ? ? ? ?if (res.data.error_msg == "match user is not found") { ? ? ? ? ? ?wx.showModal({ ? ? ? ? ? ? ?title: '簽到失敗', ? ? ? ? ? ? ?content: '請先注冊人臉才可以人臉使用', ? ? ? ? ? ?}) ? ? ? ? ?} ? ? ? ? ?if (res.data.error_msg == "SUCCESS") { ? ? ? ? ? ?that.setData({ ? ? ? ? ? ? ?msg: res.data.result.user_list[0].score, ? ? ? ? ? ?}) ? ? ? ? ? ?// console.log(res) ? ? ? ? ? ?if (that.data.msg > 80) { //相似度大于80 ? ? ? ? ? ? ?console.log('人臉識別成功') ? ? ? ? ? ?} else { ? ? ? ? ? ? ?wx.showToast({ ? ? ? ? ? ? ? ?title: '人臉識別失敗', ? ? ? ? ? ? ?}) ? ? ? ? ? ?} ? ? ? ? ?} else { ? ? ? ? ? ?wx.showToast({ ? ? ? ? ? ? ?title: '人臉識別失敗', ? ? ? ? ? ?}) ? ? ? ? ?} ? ? ? ?} ? ? ?}); ? ?} ? ?if (base64 == "") { ? ? ?wx.showToast({ ? ? ? ?title: '請重試', ? ? ? ?icon: 'loading', ? ? ? ?duration: 500 ? ? ?}) ? ?} ?},

我們執(zhí)行代碼以后,會返回一個相識度,我這里規(guī)定相識度80%以上即為同一個人。


看日志可以知道我們的相識度是98.295%,所以這里就可以認(rèn)定為簽到成功


圖片識別,人臉識別,簽到小程序,借助百度AI智能識別功能的評論 (共 條)

分享到微博請遵守國家法律
登封市| 东台市| 邵东县| 台州市| 武安市| 华安县| 宜宾县| 通州区| 六安市| 宁蒗| 民乐县| 赫章县| 平原县| 双城市| 奉节县| 通榆县| 永川市| 高密市| 台中县| 锡林郭勒盟| 瑞金市| 尉犁县| 九江县| 邛崃市| 宣汉县| 定边县| 池州市| 霞浦县| 喀喇沁旗| 崇信县| 丘北县| 房产| 沛县| 铜山县| 霍城县| 民勤县| 嘉善县| 榕江县| 柘城县| 三都| 苏尼特右旗|