百度云人脸识别API人脸库管理

 
 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 = 'MeZaaKIbOt5DGp4cfxGpv4wa'
80     client_secret = 'ImadHITTnAvtGkLeugrNUNuG3NOdiE7Q'
81     path = r'G:/images5/'
82 
83     image3 = geturlPath(path)
84 
85     # 将图片与图片库进行对比,传入指定的组
86     search(image3, client_id, client_secret, 'actor')

猜你喜欢

转载自www.cnblogs.com/erlchixiha/p/11805258.html