zoukankan      html  css  js  c++  java
  • 百度云人脸识别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 = '*********************'
    80     client_secret = '*********************'
    81     path = r'G:/images5/'
    82 
    83     image3 = geturlPath(path)
    84 
    85     # 将图片与图片库进行对比,传入指定的组
    86     search(image3, client_id, client_secret, 'actor')
  • 相关阅读:
    h5唤起app
    app唤起的完美解决方案,及阻止浏览器的默认弹窗行为
    cdn
    函数声明和函数表达式的区别
    基础系列(7)—— 结构
    基础系列(4)—— C#装箱和拆箱
    重温软件工程——对软件工程的初步了解
    基础系列(9)—— 抽象方法和接口
    自学系列--git的基础简介
    设计模式之简单工厂模式
  • 原文地址:https://www.cnblogs.com/erlchixiha/p/11805258.html
Copyright © 2011-2022 走看看