日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

调用face++平台api进行人脸识别

發(fā)布時(shí)間:2025/3/21 pytorch 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 调用face++平台api进行人脸识别 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載請(qǐng)注明出處:http://blog.csdn.net/hongbin_xu 或 http://hongbin96.com/
文章鏈接:http://blog.csdn.net/hongbin_xu/article/details/74981819 或 http://hongbin96.com/125

Face++介紹:

Face++平臺(tái)提供一整套世界領(lǐng)先的人臉檢測,人臉識(shí)別,面部分析的視覺技術(shù)服務(wù)。通過提供云端API、離線SDK等供用戶進(jìn)行開發(fā),像支付寶人臉支付使用的技術(shù)就是Face++。(face++的介紹)

每個(gè)人在Face++的官網(wǎng)注冊賬號(hào)后可以申請(qǐng)新建API,填寫相關(guān)信息后,隨后會(huì)分配API key和 API Secrect。我們可以選擇試用的服務(wù),由于是免費(fèi)的有的功能不支持。

分配的API key和 API Secrect,有了這兩個(gè)東西才能調(diào)用api。

官網(wǎng)提供了API文檔和演示。

打開api文檔可以查看詳細(xì)說明,很詳細(xì)不多說了。

實(shí)驗(yàn)平臺(tái):

我的測試程序是在Ubuntu下自帶的Python環(huán)境下編寫,用到了Python-OpenCV,所以要裝一下Python-OpenCV。

console下輸入:

sudo apt-get install python-opencv

很快就會(huì)安裝完成,并且會(huì)自動(dòng)配置好環(huán)境變量。

import cv包和cv2包看看,發(fā)現(xiàn)沒有報(bào)錯(cuò),安裝成功。

代碼:

# -*- coding:utf-8 -*- import cv2 import urllib2 import urllib import time#讀取原圖,并顯示 img = cv2.imread("football_players.jpeg") cv2.namedWindow("原圖") cv2.imshow("原圖", img)#URL http_url='https://api-cn.faceplusplus.com/facepp/v3/detect' #用戶信息 key = "RU8VkInUd4zpcCo2GbKxPz90rPoaY5O0" secret = "01YadiHNX_Fpqw6saBYa2POD6ozL6gWu" #圖片存儲(chǔ)路徑 filepath = r"/home/xhb/Study/FaceRecognition/python-opencv-face++/football_players.jpeg"#這后面的都是給的示例代碼,調(diào)用API接口 boundary = '----------%s' % hex(int(time.time() * 1000)) data = [] data.append('--%s' % boundary) data.append('Content-Disposition: form-data; name="%s"\r\n' % 'api_key') data.append(key) data.append('--%s' % boundary) data.append('Content-Disposition: form-data; name="%s"\r\n' % 'api_secret') data.append(secret) data.append('--%s' % boundary) fr=open(filepath,'rb') data.append('Content-Disposition: form-data; name="%s"; filename=" "' % 'image_file') data.append('Content-Type: %s\r\n' % 'application/octet-stream') data.append(fr.read()) fr.close() data.append('--%s--\r\n' % boundary)http_body='\r\n'.join(data) #buld http request req=urllib2.Request(http_url) #header req.add_header('Content-Type', 'multipart/form-data; boundary=%s' % boundary) req.add_data(http_body) try:#req.add_header('Referer','http://remotserver.com/')#post data to serverresp = urllib2.urlopen(req, timeout=5)#get responseqrcont=resp.read()print qrcont #打印出得到的結(jié)果except urllib2.HTTPError as e:print e.read()#進(jìn)過測試前面的程序會(huì)返回一個(gè)字典,其中指出了人臉?biāo)诘木匦蔚奈恢煤痛笮〉?#xff0c;所以直接進(jìn)行標(biāo)注 mydict = eval(qrcont) faces = mydict["faces"] faceNum = len(faces) print("識(shí)別到了%d個(gè)人臉"%(faceNum))for i in range(faceNum):face_rectangle = faces[i]['face_rectangle']width = face_rectangle['width']top = face_rectangle['top']left = face_rectangle['left']height = face_rectangle['height']start = (left, top)end = (left+width, top+height)color = (55,255,155)thickness = 3cv2.rectangle(img, start, end, color, thickness)cv2.namedWindow("識(shí)別后") cv2.imshow("識(shí)別后", img)cv2.waitKey(0) cv2.destroyAllWindows()# print type(resp)

程序不復(fù)雜,按照程序思路簡單解釋下:
1、指定圖片的名稱,讀取圖片,并顯示。

#讀取原圖,并顯示 img = cv2.imread("football_players.jpeg") cv2.namedWindow("原圖") cv2.imshow("原圖", img)

把圖片直接放在當(dāng)前目錄下即可(圖片是巴薩的<( ̄︶ ̄)>)。

2、填一些調(diào)用api相關(guān)的信息,根據(jù)需要自己改就行。

#URL http_url='https://api-cn.faceplusplus.com/facepp/v3/detect' #用戶信息 key = "RU8VkInUd4zpcCo2GbKxPz90rPoaY5O0" secret = "01YadiHNX_Fpqw6saBYa2POD6ozL6gWu" #圖片存儲(chǔ)路徑 filepath = r"/home/xhb/Study/FaceRecognition/python-opencv-face++/football_players.jpeg"

從api文檔可以查到,detect的URL:
https://api-cn.faceplusplus.com/facepp/v3/detect

用戶信息要填上自己在前面申請(qǐng)的API Key和API Secret。

要傳送圖片到face++的服務(wù)器去進(jìn)行識(shí)別,填上圖片所在的目錄的路徑:

當(dāng)前目錄路徑+圖片名。

#圖片存儲(chǔ)路徑 filepath = r"/home/xhb/Study/FaceRecognition/python-opencv-face++/football_players.jpeg"

3、中間的程序其實(shí)就是把信息封裝一下,建立網(wǎng)絡(luò)鏈接,然后跟服務(wù)器通信。調(diào)用urlopen()訪問服務(wù)器,返回resp,打印結(jié)果。

try:#req.add_header('Referer','http://remotserver.com/')#post data to serverresp = urllib2.urlopen(req, timeout=5)#get responseqrcont=resp.read()print qrcont #打印出得到的結(jié)果except urllib2.HTTPError as e:print e.read()

4、resp是返回的數(shù)據(jù)。調(diào)用read()方法,轉(zhuǎn)換成qrcont,這是個(gè)字符串,然后在終端打印出來。
終端的全部打印信息:

很明顯,返回的resp是一個(gè)字典,其中記錄了一些圖片的信息,還有識(shí)別出的人臉的位置。
qrcont是一組字符串,調(diào)用eval()函數(shù)將其轉(zhuǎn)換回字典類型,取出來再處理一下,在圖片上標(biāo)識(shí)出人臉的位置。

#進(jìn)過測試前面的程序會(huì)返回一個(gè)字典,其中指出了人臉?biāo)诘木匦蔚奈恢煤痛笮〉?#xff0c;所以直接進(jìn)行標(biāo)注 mydict = eval(qrcont) faces = mydict["faces"] faceNum = len(faces) print("識(shí)別到了%d個(gè)人臉"%(faceNum))for i in range(faceNum):face_rectangle = faces[i]['face_rectangle']width = face_rectangle['width']top = face_rectangle['top']left = face_rectangle['left']height = face_rectangle['height']start = (left, top)end = (left+width, top+height)color = (55,255,155)thickness = 3cv2.rectangle(img, start, end, color, thickness)

運(yùn)行結(jié)果:

總結(jié)

以上是生活随笔為你收集整理的调用face++平台api进行人脸识别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。