- 1 from urllib import request
- 2 import base64
- 3 import requests
- 4 import re
- 5 import json
- 6 import urllib
- 7 import os
- 8
- 9
- 10 # 获取token
- 11 def get_token(client_id,client_secret):
- 12 host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+ client_id + '&client_secret='+ client_secret + ''
- 13 headers = {'Content-Type': 'application/json; charset=UTF-8'}
- 14 res = requests.post(host, headers=headers)
- 15 access_token = re.findall('"access_token":"(.*?)"', res.text)[0]
- 16 return access_token
- 17
- 18 # 打开文件夹
- 19 def geturlPath(path):
- 20 dirs = os.listdir(path)
- 21 lst = []
- 22 for dir1 in dirs:
- 23 pa = path + dir1
- 24 lst.append(pa)
- 25 return lst
- 26
- 27 # 打开本地图片,并转化为base64
- 28 def open_pic2base(image):
- 29 f = open(image,'rb')
- 30 img = base64.b64encode(f.read()).decode('utf-8')
- 31 return img
- 32
- 33 # 对两张图片进行对比
- 34 def check2pic(client_id,client_secret,image1,image2):
- 35 request_url = "https://aip.baidubce.com/rest/2.0/face/v3/match"
- 36 for image in image2:
- 37 a = open_pic2base(image)
- 38 b = base64.b64decode(a)
- 39 params = json.dumps(
- 40 [{"image": open_pic2base(image1), "image_type": "BASE64","quality_control": "LOW"},
- 41 {"image": a, "image_type": "BASE64","quality_control": "LOW"}])
- 42
- 43 # 调用接口
- 44 access_token = get_token(client_id, client_secret)
- 45 request_url = request_url + "?access_token=" + access_token
- 46 params = params.encode("utf-8")
- 47 request = urllib.request.Request(url=request_url, data=params)
- 48 request.add_header('Content-Type', 'application/json')
- 49
- 50 response = urllib.request.urlopen(request)
- 51 content = response.read()
- 52 score = 0
- 53 if content:
- 54 result = json.loads(content.decode('utf-8'))
- 55 if result["error_code"] == 0:
- 56 score = result["result"]["score"]
- 57 if score > 75:
- 58 with open('G:/images6/'+ image.split('/')[-1],'wb') as f:
- 59 f.write(b)
- 60 f.close()
- 61 else:
- 62 errors = {}
- 63 error_msg = result["error_msg"]
- 64 errors[image.split('/')[-1]] = error_msg
- 65 print(errors)
- 66 if __name__ == '__main__':
- 67 client_id = 'MeZaaKIbOt5DGp4cfxGpv4wa'
- 68 client_secret = 'ImadHITTnAvtGkLeugrNUNuG3NOdiE7Q'
- 69 path = r'G:/images5/'
- 70
- 71 image1 = 'G:\images2\gu1.jpg'
- 72 image2 = geturlPath(path)
- 73
- 74 # 将两张图片进行对比,得出相似分
- 75 check2pic(client_id,client_secret,image1,image2)