用python來作人臉識別代碼量少 思路清晰,python
在使用以前咱們須要在咱們的配置的編譯器中經過pip install baidu-aip 便可api
from aip import AipFace
就能夠開始使用api了 咱們第一次接觸這個東西不妨app
help(AipFace)
你就能夠看到他所支持的功能。機器學習
在使用以前咱們須要在百度的後臺建立應用。將咱們人臉都存放入庫中。學習
其次咱們要了解一個概念,咱們要將本機中的圖片與後臺的人臉對比的話咱們須要將圖片轉成base64的字符串的格式url
import base64
f = open('./photo/mr.jpg', 'rb')
image = base64.b64encode(f.read())
image64 = str(image,'utf-8')
image_type = "BASE64"
固然咱們也能夠將base64碼轉換成圖片。spa
人臉檢測的原理是經過機器學習轉化提早圖片人臉中的七十二個關鍵點。並進行其餘的分析。rest
python3的代碼爲code
''' # 人臉檢測與屬性分析 ''' request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect" f = open('./photo/mr.jpg', 'rb') image = base64.b64encode(f.read()) image64 = str(image,'utf-8') image_type = "BASE64" # params = "{\"image\":\"%s\",\"image_type\":\"BASE64\",\"face_field\":\"faceshape,facetype\"}"%image64 params = {'image': image64,'image_type':"BASE64",'face_field': 'faceshape,facetype'} # 此處的faceshape和facetype須要本身加上去 更具本身須要的返回值 params = urllib.parse.urlencode(params).encode("utf-8") access_token = '[24.3941b86dfcbc8eaea432d11df4f6660d.2592000.1542368987.282335-14255146]' request_url = request_url + "?access_token=" + access_token request = urllib.request.urlopen(url=request_url, data=params) # 發送請求 content = request.read() # 將返回結果讀取出來 print(content) # 顯示返回結果 import urllib.request,sys,base64 import urllib.parse # 返回實例 a = {'error_code': 0, 'error_msg': 'SUCCESS', 'log_id': 1011018945051, 'timestamp': 1540301526, 'cached': 0, 'result': {'face_num': 1, 'face_list': [{'face_token': '80ed04e5e8771730b3fe240f8ead4e97', 'location': {'left': 564.6082764, 'top': 117.9681244, 'width': 263, 'height': 265, 'rotation': 1}, 'face_probability': 1, 'angle': {'yaw': -0.301689893, 'pitch': -15.59528351, 'roll': 0.9747127891 } } ] } }
具體各類屬性請看百度文檔 https://ai.baidu.com/docs#/Face-Detect-V3/topblog
介紹完人臉檢測咱們就能夠進行人臉對比了
import base64 from aip import AipFace '''新建aipface的配置''' ''' 你的 app id ak sk ''' AppId = '14255146' ApiKey = 'UoyrHmKFG3nGPL5HmDiGo80G' SecretKey = 'HUo1z36aDc1UxOwuS8d7Vxldh4GsQg8l' client = AipFace(AppId, ApiKey, SecretKey) f = open('./photo/huge.jpg', 'rb') image = base64.b64encode(f.read()) image64 = str(image,'utf-8') image_type = "BASE64" print(client.detect(image64, image_type)) # 此處的返回值爲人臉的基本檢測的數值效果 # print(strs) # 人臉檢測 # image = str(strs) # 取決於image_type參數,傳入BASE64字符串或URL字符串或FACE_TOKEN字符串 imageType = "BASE64" groupIdList = "17ai_1" """ 調用人臉搜索 """ print(client.search(str(image64), image_type, groupIdList)) # 將返回對比結果 ''' """ 若是有可選參數 """ options = {} options["quality_control"] = "NORMAL" options["liveness_control"] = "LOW" options["user_id"] = "233451" options["max_user_num"] = 3 """ 帶參數調用人臉搜索 """ # print(client.search(image, imageType, , options)) # 人臉搜索返回例子 ''' face = { "face_token": "fid", "user_list": [ { "group_id": "test1", "user_id": "u333333", "user_info": "Test User", "score": 99.3 } ] }