from urllib import request
import base64
import requests
import re
import json
import urllib
import os
# 获取token
def get_token(client_id,client_secret):
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+ client_id + '&client_secret='+ client_secret + ''
headers = {'Content-Type': 'application/json; charset=UTF-8'}
res = requests.post(host, headers=headers)
access_token = re.findall('"access_token":"(.*?)"', res.text)[0]
return access_token
# 打开文件夹
def geturlPath(path):
dirs = os.listdir(path)
lst = []
for dir1 in dirs:
pa = path + dir1
lst.append(pa)
return lst
# 打开本地图片,并转化为base64
def open_pic2base(image):
f = open(image,'rb')
img = base64.b64encode(f.read()).decode('utf-8')
return img
# 对两张图片进行对比
def check2pic(client_id,client_secret,image1,image2):
request_url = "https://aip.baidubce.com/rest/2.0/face/v3/match"
for image in image2:
a = open_pic2base(image)
b = base64.b64decode(a)
params = json.dumps(
[{"image": open_pic2base(image1), "image_type": "BASE64","quality_control": "LOW"},
{"image": a, "image_type": "BASE64","quality_control": "LOW"}])
# 调用接口
access_token = get_token(client_id, client_secret)
request_url = request_url + "?access_token=" + access_token
params = params.encode("utf-8")
request = urllib.request.Request(url=request_url, data=params)
request.add_header('Content-Type', 'application/json')
response = urllib.request.urlopen(request)
content = response.read()
score = 0
if content:
result = json.loads(content.decode('utf-8'))
if result["error_code"] == 0:
score = result["result"]["score"]
if score > 75:
with open('G:/images6/'+ image.split('/')[-1],'wb') as f:
f.write(b)
f.close()
else:
errors = {}
error_msg = result["error_msg"]
errors[image.split('/')[-1]] = error_msg
print(errors)
if __name__ == '__main__':
client_id = 'MeZaaKIbOt5DGp4cfxGpv4wa'
client_secret = 'ImadHITTnAvtGkLeugrNUNuG3NOdiE7Q'
path = r'G:/images5/'
image1 = 'G:\images2\gu1.jpg'
image2 = geturlPath(path)
# 将两张图片进行对比,得出相似分
check2pic(client_id,client_secret,image1,image2)