当前位置: 首页 > 工具软件 > face-search > 使用案例 >

【Python】调用百度云API人脸搜索服务 Face Search

耿炎彬
2023-12-01
# encoding:utf-8
# !/usr/local/bin/python3

# 百度云:人脸搜索服务
# 应用名称:人脸开锁


import urllib3
from urllib.parse import urlencode
import urllib
import urllib.request
import sys
import ssl
import base64
import json

'''
# 调用API前必须获取Access Token
# client_id 为官网获取的AK, client_secret 为官网获取的SK
# access_token: 要获取的Access Token;
# expires_in: Access Token的有效期(秒为单位,一般为1个月);
'''
AppId = 16902753
ApiKey = 'rrRIfsvmI28bPFsRsSf0rrvH'
SecretKey = 'TNMr27ErnzIHt2n4TlSZPuVG7xFZkSNS'
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+ApiKey+'&client_secret='+SecretKey
request = urllib.request.Request(host)
request.add_header('Content-Type', 'application/json; charset=UTF-8')
response = urllib.request.urlopen(request)
content = response.read()
if (content):
    #print(content)                                 # 打印获取到的信息
    content = content.decode('utf-8')               # 通过decode将bytes字节串转换为字符串str
    contentDict = json.loads(content)               # 借助json函数将str转换为dict
    refresh_token = contentDict["refresh_token"]    # 直接读取dict字典内需要的数据
    expires_in = contentDict["expires_in"]
    session_key = contentDict["session_key"]
    access_token = contentDict["access_token"]
    scope = contentDict["scope"]
    session_secret = contentDict["session_secret"]
    #print(access_token)

'''
人脸搜索
'''
request_url = "https://aip.baidubce.com/rest/2.0/face/v3/search"
imagePath = '/Users/zhaojichao/Desktop/face.jpeg'                           # 测试100001
#imagePath = '/Users/zhaojichao/Downloads/mmexport1565091537318.jpg'        # 测试100002
f = open(imagePath, 'rb')
img = base64.b64encode(f.read())                                            # img为bytes类型
img = img.decode('utf-8')                                                   # img为str类型
params = {  "image":img, 
            "image_type":"BASE64", 
            "group_id_list":"16_219", 
            "quality_control":"LOW", 
            "liveness_control":"NORMAL"}
params = urllib.parse.urlencode(params)                                     # 对base64数据进行urlencode处理编码之后格式为str
params = params.encode('utf-8')                                             # str转为可以提交的bytes
access_token = access_token
request_url = request_url + "?access_token=" + access_token
request = urllib.request.Request(url=request_url, data=params)
request.add_header('Content-Type', 'application/json')
response = urllib.request.urlopen(request)
content = response.read()
if content:
    print (content)
 类似资料: