python 与 百度人脸识别api

Posted 晴晴小可爱的小弟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 与 百度人脸识别api相关的知识,希望对你有一定的参考价值。

用python来做人脸识别代码量少 思路清晰,

在使用之前我们需要在我们的配置的编译器中通过pip       install baidu-aip  即可

from aip import AipFace

就可以开始使用api了 我们第一次接触这个东西不妨

help(AipFace)

你就可以看到他所支持的功能。

在使用之前我们需要在百度的后台创建应用。将我们人脸都存放入库中。

其次我们要了解一个概念,我们要将本机中的图片与后台的人脸对比的话我们需要将图片转成base64的字符串的格式

import base64
f = open(‘./photo/mr.jpg‘, ‘rb‘)
image = base64.b64encode(f.read())
image64 = str(image,‘utf-8‘)
image_type = "BASE64"

当然我们也可以将base64码转换成图片。

人脸检测的原理是通过机器学习转化提前图片人脸中的七十二个关键点。并进行其他的分析。

python3的代码为

‘‘‘
# 人脸检测与属性分析
‘‘‘

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/top

介绍完人脸检测我们就可以进行人脸对比了

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
    }
  ]
}

 




以上是关于python 与 百度人脸识别api的主要内容,如果未能解决你的问题,请参考以下文章

基于Python的百度AI人脸识别API接口(可用于OpenCV-Python人脸识别)

Python实现人脸识别

Python丨调用百度的人脸识别api给你的颜值打个分

7行Python代码的人脸识别

调用百度人脸识别API实现简单的颜值检测

[转]7行Python代码的人脸识别