用Python调用百度人脸识别接口

ゝ一纸荒年。 2022-05-18 10:40 319阅读 0赞

先注册百度云管理中心,然后创建应用。

70

70 1

70 2

  1. import urllib
  2. import ssl
  3. from urllib import request, parse
  4. import json
  5. # client_id 为官网获取的AK, client_secret 为官网获取的SK
  6. def get_token():
  7. context = ssl._create_unverified_context()
  8. host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=oxWSUmCiaxLARzcavNHsh4Sq&client_secret=feMOxxWatn53Gxp2IG8rpv5bR2fIKGry'
  9. request = urllib.request.Request(host)
  10. request.add_header('Content-Type', 'application/json; charset=UTF-8')
  11. response = urllib.request.urlopen(request, context=context)
  12. # 获取请求结果
  13. content = response.read()
  14. # 转换为字符
  15. content = bytes.decode(content)
  16. # 转换为字典
  17. content = eval(content[:-1])
  18. return content['access_token']
  19. # 转换图片
  20. # 读取文件内容,转换为base64编码
  21. # 二进制方式打开图文件
  22. def imgdata(file1path, file2path):
  23. import base64
  24. f = open(r'%s' % file1path, 'rb')
  25. pic1 = base64.b64encode(f.read())
  26. f.close()
  27. f = open(r'%s' % file2path, 'rb')
  28. pic2 = base64.b64encode(f.read())
  29. f.close()
  30. # 将图片信息格式化为可提交信息,这里需要注意str参数设置
  31. params = json.dumps(
  32. [{"image": str(pic1, 'utf-8'), "image_type": "BASE64", "face_type": "LIVE", "quality_control": "LOW"},
  33. {"image": str(pic2, 'utf-8'), "image_type": "BASE64", "face_type": "IDCARD", "quality_control": "LOW"}]
  34. )
  35. return params.encode(encoding='UTF8')
  36. # 进行对比获得结果
  37. def img(file1path, file2path):
  38. token = get_token()
  39. # 人脸识别API
  40. # url = 'https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token='+token
  41. # 人脸对比API
  42. context = ssl._create_unverified_context()
  43. # url = 'https://aip.baidubce.com/rest/2.0/face/v3/match?access_token=' + token
  44. params = imgdata(file1path, file2path)
  45. request_url = "https://aip.baidubce.com/rest/2.0/face/v3/match"
  46. request_url = request_url + "?access_token="+ token
  47. request = urllib.request.Request(url=request_url,data=params)
  48. request.add_header('Content-Type', 'application/json')
  49. response = urllib.request.urlopen(request ,context=context)
  50. content = response.read()
  51. content = eval(content)
  52. # # 获得分数
  53. score = content['result']['score']
  54. if score > 80:
  55. return '照片相似度:' + str(score) + ',同一个人'
  56. else:
  57. return '照片相似度:' + str(score) + ',不是同一个人'
  58. if __name__ == '__main__':
  59. file1path = '/Users/cagey/pic-test/1.jpg'
  60. file2path = '/Users/cagey/pic-test/2.jpg'
  61. res = img(file1path, file2path)
  62. print(res)

70 3

发表评论

表情:
评论列表 (有 0 条评论,319人围观)

还没有评论,来说两句吧...

相关阅读