Python3使用百度人臉識別接口識別高顏值妹子圖片
一、在百度雲平臺創建應用
為什麽要到百度雲平臺創建應用,首先來說是為了獲取獲取access_token時需要的API Key和Secret Key
至於為什麽需要API Key和Secret Key才能獲取access_token,應該一是為了推廣一下百度雲二是為了獲取一些統計數據。微信蘋果要你們搞得,度娘就不能要你們搞得?不要糾結
1.訪問百度AI開放 平臺:http://ai.baidu.com/
2.“產品服務”----“人臉檢測”
3. “立即使用”
4. 使用自己的百度賬號登錄(就手機百度、百度地圖的那些賬號,實在沒有就註冊一個咯)
5.創建應用
6.填寫應用信息
應用名稱----自己隨便起就行
應用類型----不用管
接口選擇----我們是從人臉識別鏈接進來的所以默認已幫我們全選上了人臉相關的接口,所以可以不用管;當然自己想調整也行
應用描述----自己隨便寫寫就行
點擊立即創建
7.查看應用詳情
8.記錄自己的API Key和Secret Key
二、高顏值妹子識別程序代碼
1.好吧,這裏有點標題黨,因為程序實現的是識別url指向的圖片的中的人物,然後獲取其種類(人還是漫畫)、性別、年齡和顏值,並不會說這妹子很漂亮這妹子很醜;但從技術上講,顏值高低不過一個if顏值的事情並不是什麽難點,這個就不用糾結了。
2.對於更高級的噱頭----下載高顏值妹子圖片,這在技術上也不是難點為了程序簡潔這裏下載代碼就不寫了;非要下載建議使用scrapy的ImagePiple,個人覺得那才是絕配。
3.程序使用的第三方庫requests進行請求,官方示例用的urllib/urllb2為了程序通用可以理解,但urllib比較費勁平時自己寫還是直接用requests好一些
4.程序不是很長也寫了註釋,就不再具體講解了,自己使用時記得三件事(代碼中的client_id和client_secret我貼上來時亂改的,程序直接運行會出錯的):
將client_id賦值成自己的API Key,client_secret賦值成自己的Secret Key,url_pic賦值成自己想測試的圖片的url
5.其關access_token有效期一般有一個月(具體看返回的json_result[‘"expires_in"‘],單位秒),所以不用每次請求都去申請一次access_token,雖然官方容許每次都請求這種操作
6.官方文檔其實各個點都算講得明白的,耐心點讀理解應該都沒問題:http://ai.baidu.com/docs#/Face-Detect-V3/top
7.另外百度針對python提供了pypi庫----baidu-aip,但原理一樣的還是提供API Key和Secret Key聯網去申請access_token,也就做了一下封裝便利性上也就差不多吧想不想用看自己
import requests import json class BaiduFaceIdentify(): #此函數用於獲取access_token,返回access_token的值 #此函數被parse_face_pic調用 def get_access_token(self): client_id = ‘KuLRFhTzX3zBFBSrbQBsl6Q4‘ #此變量賦值成自己API Key的值 client_secret = ‘8ahbIb2hEOePzXhehw9ZDL9kGvbzIHTU‘ #此變量賦值成自己Secret Key的值 auth_url = ‘https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=‘ + client_id + ‘&client_secret=‘ + client_secret response_at = requests.get(auth_url) json_result = json.loads(response_at.text) access_token = json_result[‘access_token‘] return access_token #此函數進行人臉識別,返回識別到的人臉列表 #此函數被parse_face_pic調用 def identify_faces(self,url_pic,url_fi): headers = { ‘Content-Type‘ : ‘application/json; charset=UTF-8‘ } post_data = { ‘image‘: url_pic, ‘image_type‘ : ‘URL‘, ‘face_field‘ : ‘facetype,gender,age,beauty‘, #expression,faceshape,landmark,race,quality,glasses ‘max_face_num‘: 2 } response_fi = requests.post(url_fi,headers=headers,data=post_data) json_fi_result = json.loads(response_fi.text) return json_fi_result[‘result‘][‘face_list‘] #下邊的print也許是最直觀,你最想要的 #print(json_fi_result[‘result‘][‘face_list‘][0][‘age‘]) #print(json_fi_result[‘result‘][‘face_list‘][0][‘beauty‘]) #此函數用於解析進行人臉圖片,輸出圖片上的人臉的性別、年齡、顏值 #此函數調用get_access_token、identify_faces def parse_face_pic(self,url_pic): #調用get_access_token獲取access_token access_token = self.get_access_token() url_fi = ‘https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=‘ + access_token #調用identify_faces,獲取人臉列表 json_faces = self.identify_faces(url_pic,url_fi) if len(json_faces) == 0: print(‘未識別到人臉‘) else: for json_face in json_faces: print(‘種類:‘+json_face[‘face_type‘][‘type‘]) print(‘性別:‘+json_face[‘gender‘][‘type‘]) print(‘年齡:‘+str(json_face[‘age‘])) print(‘顏值:‘+str(json_face[‘beauty‘])) if __name__ == ‘__main__‘: #uil_pic賦值成自己要測試的圖片的url地址 url_pic = ‘https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1357154930,886228461&fm=27&gp=0.jpg‘ bfi = BaiduFaceIdentify() bfi.parse_face_pic(url_pic)
運行結果載圖:
參考:
https://blog.csdn.net/shuihupo/article/details/79866439
http://ai.baidu.com/docs#/Face-Detect-V3/top
Python3使用百度人臉識別接口識別高顏值妹子圖片