百度token怎么获取_百度AI攻略:人脸检测

2023-05-16

认证授权:

在开始调用任何API之前需要先进行认证授权,具体的说明请参考:

http://ai.baidu.com/docs#/Auth/top

获取Access Token

向授权服务地址https://aip.baidubce.com/oauth/2.0/token发送请求(推荐使用POST),并在URL中带上以下参数:

grant_type:?必须参数,固定为client_credentials;
client_id:?必须参数,应用的API Key;
client_secret:?必须参数,应用的Secret Key;
例如:

https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHlA4Fq5eR3LT0vuXV4&client_secret=0rDSjzQ20XUj5itV6WRtznPQSzr5pVw2&

具体代码如下:

# -*- coding: utf-8 -*-
#!/usr/bin/env python

import urllib
import json
#client_id 为官网获取的AK, client_secret 为官网获取的SK
client_id =【百度云应用的AK】
client_secret =【百度云应用的SK】

#获取token
def get_token():
    host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret
    request = urllib.request.Request(host)
    request.add_header('Content-Type', 'application/json; charset=UTF-8')
    response = urllib.request.urlopen(request)
    token_content = response.read()
    if token_content:
        token_info = json.loads(token_content)
        token_key = token_info['access_token']
    return token_key

人脸检测与属性分析

具体说明请查阅: http://ai.baidu.com/docs#/Face-Detect-V3/top

人脸识别接口分为V2和V3两个版本,本文档为V3版本接口的说明文档,请确认您在百度云后台获得的是V3版本接口权限,再来阅读本文档。

能力介绍
接口能力

人脸检测:检测图片中的人脸并标记出位置信息;
人脸关键点:展示人脸的核心关键点信息,及150个关键点信息。
人脸属性值:展示人脸属性信息,如年龄、性别等。
人脸质量信息:返回人脸各部分的遮挡、光照、模糊、完整度、置信度等信息。
业务应用

典型应用场景:如人脸属性分析,基于人脸关键点的加工分析,人脸营销活动等。

调用方式

向API服务地址使用POST发送请求,必须在URL中带上参数access_token,可通过后台的API Key和Secret Key生成,具体方式请参考“Access Token获取”。

请求说明

请求体格式化:Content-Type为application/json,通过json格式化请求体。
Base64编码:请求的图片需经过Base64编码,图片的base64编码指将图片数据编码成一串字符串,使用该字符串代替图像地址。您可以首先得到图片的二进制,然后用Base64格式编码即可。需要注意的是,图片的base64编码是不包含图片头的,如data:image/jpg;base64,
图片格式:现支持PNG、JPG、JPEG、BMP,不支持GIF图片

HTTP方法:POST

请求URL: https://aip.baidubce.com/rest/2.0/face/v3/detect

Python3代码如下:

#获取人脸检测信息
def face_detect_url(url):
    request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect"
    
    params = dict()
    params['image'] = url
    params['image_type'] = 'URL'
    params['face_field'] = 'faceshape,facetype,landmark,landmark72'
    
    params = json.dumps(params).encode('utf-8')
    
    access_token=get_token()
    request_url = request_url + "?access_token=" + access_token
    request = urllib.request.Request(url=request_url, data=params)
    request.add_header('Content-Type', 'application/json')
    response = urllib.request.urlopen(request)
    content = response.read()
    if content:
        print (content)
        return content
    else:
        return ''

这个函数将根据网上图片URL地址获取图片并进行检测。让我们用网上找的一张图片进行测试:

执行代码:

image_url='http://p0.qhimgs4.com/t0159dd32381d0c25b7.jpg'
face_detect_url(image_url)

返回结果:

b'{"error_code":0,"error_msg":"SUCCESS","log_id":304592843452042151,"timestamp":1554345204,"cached":0,"result":{"face_num":1,"face_list":[{"face_token":"5951950e8c05735152e696163b9a59cc","location":{"left":153.82,"top":248.56,"width":318,"height":317,"rotation":3},"face_probability":0.97,"angle":{"yaw":16.99,"pitch":10.57,"roll":-2.37},"face_shape":{"type":"heart","probability":0.37},"face_type":{"type":"human","probability":0.96},"landmark":[{"x":204.94,"y":313.87},{"x":340.33,"y":321.52},{"x":244.5,"y":402.48},{"x":256,"y":469.66}],"landmark72":[{"x":150.9,"y":310.37},{"x":146.88,"y":354.74},{"x":146.91,"y":400.53},{"x":155.44,"y":445.99},{"x":174.77,"y":493.18},{"x":205.04,"y":541.51},{"x":246.8,"y":572.16},{"x":303.11,"y":568.65},{"x":361.73,"y":541.55},{"x":413.84,"y":495.42},{"x":440.27,"y":442.75},{"x":456.03,"y":388.79},{"x":467.57,"y":334.35},{"x":171.98,"y":314.72},{"x":185.4,"y":302.98},{"x":200.74,"y":300.89},{"x":217.11,"y":307.92},{"x":229.67,"y":325.15},{"x":213.74,"y":325.74},{"x":196.71,"y":325.45},{"x":182.26,"y":321.23},{"x":204.94,"y":313.87},{"x":157.69,"y":275.88},{"x":172.48,"y":256.88},{"x":193.09,"y":254.09},{"x":213.77,"y":259.09},{"x":231.35,"y":276.15},{"x":211.35,"y":272.76},{"x":191.75,"y":269.52},{"x":173.47,"y":269.62},{"x":307.03,"y":329.36},{"x":321.9,"y":313.15},{"x":339.63,"y":308.27},{"x":357.91,"y":313.5},{"x":374.37,"y":327.15},{"x":358.16,"y":332.11},{"x":339.75,"y":333.86},{"x":322.58,"y":332.47},{"x":340.33,"y":321.52},{"x":299.9,"y":278.14},{"x":326.07,"y":261.57},{"x":354.67,"y":260.59},{"x":383.58,"y":268.55},{"x":406.72,"y":293.57},{"x":380.55,"y":281.15},{"x":353.84,"y":276.67},{"x":326.51,"y":278},{"x":243.97,"y":326.97},{"x":234.67,"y":354.6},{"x":224.5,"y":382.86},{"x":212.93,"y":410},{"x":229.08,"y":417.3},{"x":272.61,"y":419.89},{"x":299.76,"y":416.45},{"x":288.56,"y":386.93},{"x":285.88,"y":358.4},{"x":282.93,"y":329.6},{"x":244.5,"y":402.48},{"x":200.9,"y":453.98},{"x":223.42,"y":448},{"x":251.74,"y":451.01},{"x":289.71,"y":452.96},{"x":329.26,"y":462.63},{"x":293.65,"y":494.31},{"x":249.35,"y":504.21},{"x":216.52,"y":487},{"x":223.98,"y":456.81},{"x":251.93,"y":461.81},{"x":289.22,"y":461.47},{"x":289.29,"y":480.88},{"x":251.7,"y":484.9},{"x":223.34,"y":475.3}]}]}}'

现在大家只能看到检测的数字,为了方便大家查看图片,我把获取图片及画图的Python3代码也写了。如下:

def get_landmark72(content):
    content=content.decode('utf-8')
    data = json.loads(content)
    #print (data)
    return data['result']['face_list'][0]['landmark72']

def drow_face_line_72(url,imagefile,linedfile,landmark72):
    from PIL import Image, ImageDraw
    from io import BytesIO
    import requests
    response = requests.get(url)
    image_origin = Image.open(BytesIO(response.content))
    image_origin.save(imagefile)
    
    restart_points=[0,13,22,30,39,47,58]
    
    #image_origin = Image.open(imagefile)

    draw =ImageDraw.Draw(image_origin)
    
    i=0
    for point in landmark72:
        if i in restart_points:
            start_x=point['x']
            start_y=point['y']
        else:
            draw.line((start_x, start_y, point['x'], point['y']), 'blue')
            start_x=point['x']
            start_y=point['y']
        i=i+1
    
    
    #draw.line((0,0) +Image1.size, fill=128)
    image_origin.show()
    image_origin.save(linedfile, "JPEG")

def face_detect_line(url,imagefile,linedfile):
    content=face_detect_url(url)
    if len(content)>0:
        landmark72=get_landmark72(content)
        drow_face_line_72(url,'origin.jpg','lined.jpg',landmark72)

执行face_detect_line(image_url,'origin.jpg','lined.jpg'),将在代码目录生成,两张图片一张是原图,一张是根据landmark72划线后的图片。如下图所示:

大家还可以用网上找的其他人脸图片的URL来试一下。

建议:
感觉现在的人脸检测功能十分的强大和准确,有一个小建议,如果是张嘴的图,能否把人的牙齿和舌头等其他部分区分的点也都标出来。如果能实现的话就太好了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

百度token怎么获取_百度AI攻略:人脸检测 的相关文章

  • Oracle:在文本字段中使用 IN 子句? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在 oracle 9i 中最好地分割 csv 字符串 我有一些遗留数据VARCHAR2 100 field SUBID具有逗号分隔的数据 empno subid 1 1 3 2 2 18 19 3
  • 使用 LOGON32_LOGON_NETWORK_CLEARTEXT 进行令牌委托

    使用安全性如何LOGON32 LOGON NETWORK CLEARTEXT http msdn microsoft com en us library windows desktop aa378184 28v vs 85 29 aspx
  • django-rest-auth 重置密码 uid 和令牌

    我们的团队在后端使用 django rest api 进行项目 并在前端进行响应 对于身份验证 我们使用 django rest auth 并且我们在密码重置方面遇到问题 这里的网址 urlpatterns url r accounts i
  • Firebase 3.x - 令牌/会话过期

    有谁知道令牌需要多长时间才会过期 现在没有选项可以在控制台上设置令牌有效性 自 2016 年 5 月起 Firebase 身份验证登录会话不再过期 相反 他们使用长期帐户令牌和短期自动刷新访问 ID 令牌的组合来获得两全其美的效果 如果你想
  • 如何针对 firebase 验证身份验证令牌?

    我的意思不是使用 firebase 进行自定义身份验证 我需要的与在应用程序服务器中生成令牌并允许在 firebase 中访问的自定义身份验证略有不同 实际上 例如 我正在尝试使用电子邮件和密码在 firebase 中进行身份验证 并且通过
  • Java 中的字符串分词器

    我有一个文本文件 其中包含用 分隔的数据 我需要获取每个字段 用 分隔 并处理它 文本文件如下所示 ABC DEF FGHT 我正在使用字符串标记生成器 JDK 1 4 来获取每个字段值 现在的问题是 我应该在 DEF 之后得到一个空字符串
  • 通过 Microsoft Graph 访问 Workbook 对象所需的正确权限

    我正在尝试从 Sharepoint 文档库中的文件获取 Workbook 对象 根据微软 https learn microsoft com en us graph api resources excel view graph rest 1
  • 无状态 Web 应用程序,都市传奇?

    我试图理解token based authentication这些天 它声称是stateless authentication方法 我遇到了这个概念stateless web application 以下是我读到的一些主题 使用 Sprin
  • 在 flutter 应用程序中保存 jwt 令牌的最佳方法是什么?

    不仅仅是在哪里 例如 SQLite 还有如何 库 最佳具体实践 您可能不想在共享首选项中存储敏感数据 相反 您可能想研究这样的插件 https pub dartlang org packages flutter secure storage
  • 我应该在 Django Rest Framework 中使用 JWT 还是基本令牌身份验证?

    我即将使用 Django Rest Framework 在我的 API 中实现令牌身份验证 但我不确定我是否应该使用基本令牌内置 DRF 或使用 JSON Web 令牌 JWT 标准 使用这个包djangorestframework jwt
  • 我的 Flex 文件输出错误

    我编写了一个 l 文件并希望输出 c17 isc 中的内容 但有一个错误我不知道为什么 我已经给出了我打算读取的文件 flex文件和执行结果 这是 c17 isc 文件 内容的意思是 number gate name gate type o
  • 使用 devise_token_auth 和 active_model_serializers 解决多个用户模型的问题?

    多个用户模型 User Admin 和 Master 与 devise token auth 的组合在使用非 User 模型 Admin 和 Master 登录时无法成功设置响应标头 uid token 等 然而 用户模型是有效的 原因看起
  • Laravel:“users”数据库表中的“remember_token”是什么?

    使用是否安全remember token在用户表中用于验证用户进入应用程序 这个令牌的目的是什么 目前 我在表单中使用它来检查用户是否已登录 如果令牌不存在 我将显示登录屏幕 每次用户注销时 都会重新生成此令牌 不 它不应该用于身份验证 框
  • 使用 Firebase-PHP 验证 Firebase ID 令牌

    我正在使用 Firebase Auth 在以 PHP 编码的网络应用程序上授权用户 授权本身是用 Javascript 进行的 它在 Ajax 请求上执行以验证用户是否已登录 要在我已经实现的服务器上使用 Firebase AdminFir
  • Azure Cosmos 分页:FeedResponse.ContinuationToken 在下一个请求中不起作用

    下面是我在 Azure Cosmos 中进行分页的代码 在该函数中 我返回 FeedResponse 的 ContinuationToken 获取第一页的第一个请求很好 它返回继续令牌 但是 如果我在下一个请求中使用该令牌 则 API 将返
  • 使用客户端指纹对 JWT 令牌进行编码?

    我想知道是否会是最佳实践使用客户端指纹作为 JWT 秘密进行编码 然而 我在 WWW 上找不到有关这个问题的任何内容 但到目前为止 我这样做是有意义的 我正在考虑使用 JavaScript 生成指纹客户端 并在每次调用时将其发送到 API
  • 如何编写 GraphQL 查询

    我有一个有效的网络 graphql 查询 me on Student profile fullName emailId mobileNumber civilId address city state country zipCode user
  • 缓存 auth_request 中的令牌

    我想缓存请求标头字段授权中的令牌 Authorization Bearer abcdefghijklmnopqrstuvwxyz 我的目标是 我不必验证验证服务器上的每个请求 如果授权令牌已缓存 且有效 则请求应调用 API 而无需验证 l
  • 如何生成24小时后过期的唯一令牌?

    我有一个 WCF Web 服务来检查用户是否有效 如果用户有效 我想生成一个 24 小时后过期的令牌 public bool authenticateUserManual string userName string password st
  • 如何在 C# 中从 USB 令牌读取证书

    我有一个 USB 令牌 其中包含一个加密证书 该证书具有公钥和私钥 现在我想用 C 创建一个应用程序 通过它我可以找到可访问的证书信息 当我插入 USB 令牌时 它会被检测到 但计算机部分上没有显示任何驱动器 就像闪存驱动器一样 如何从 U

随机推荐