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 # 获取token 10 def get_token(client_id,client_secret): 11 host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+ client_id + '&client_secret='+ client_secret + '' 12 headers = {'Content-Type': 'application/json; charset=UTF-8'} 13 res = requests.post(host, headers=headers) 14 access_token = re.findall('"access_token":"(.*?)"', res.text)[0] 15 return access_token 16 17 # 打开文件夹,进行对比 18 def geturlPath(path): 19 dirs = os.listdir(path) 20 lst = [] 21 for dir1 in dirs: 22 pa = path + dir1 23 lst.append(pa) 24 return lst 25 26 # 打开本地图片,并转化为base64 27 def open_pic2base(image): 28 f = open(image,'rb') 29 img = base64.b64encode(f.read()).decode('utf-8') 30 return img 31 32 def search(image3,client_id,client_secret,groups): 33 request_url = "https://aip.baidubce.com/rest/2.0/face/v3/search" 34 for image in image3: 35 a = open_pic2base(image) 36 params =json.dumps({"image":a,"image_type":"BASE64","group_id_list":groups}) 37 access_token = get_token(client_id, client_secret) 38 request_url = request_url + "?access_token=" + access_token 39 params = params.encode("utf-8") 40 41 request = urllib.request.Request(url=request_url, data=params) 42 43 request.add_header('Content-Type', 'application/json') 44 response = urllib.request.urlopen(request) 45 content = response.read() 46 user = 'not find' 47 if content: 48 result = json.loads(content.decode('utf-8')) 49 print(result) 50 if result['error_code']==0: 51 lst = [] 52 sets = {} 53 user=result['result']['user_list'][0] 54 group_id = user["group_id"] 55 user_id=user['user_id'] 56 score = user['score'] 57 sets["所在组为"] = group_id 58 sets["相似用户为"] = user_id 59 sets["相似得分为"] = score 60 lst.append(sets) 61 print(lst) 62 if score > 85: 63 add_face2ku = face_add(image,group_id,user_id) 64 else: 65 pass 66 67 def face_add(image,group_id,user_id): 68 request_url = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add' 69 params = json.dumps({"image":open_pic2base(image),"image_type":"BASE64","group_id":group_id,"user_id":user_id}) 70 access_token = get_token(client_id, client_secret) 71 request_url = request_url + "?access_token=" + access_token 72 params = params.encode("utf-8") 73 request = urllib.request.Request(url=request_url, data=params) 74 request.add_header('Content-Type', 'application/json') 75 response = urllib.request.urlopen(request) 76 return response 77 78 if __name__ == '__main__': 79 client_id = '*********************' 80 client_secret = '*********************' 81 path = r'G:/images5/' 82 83 image3 = geturlPath(path) 84 85 # 将图片与图片库进行对比,传入指定的组 86 search(image3, client_id, client_secret, 'actor')