在使用百度的AI开放平台时,不熟悉网页请求这类知识,遇到使用不畅的问题,借鉴了网上两个人的经验,最后实现了更直白的代码。

主程序:

'''
# 人体关键点识别
'''
import base64
import urllib
import urllib.request,sys,base64
import urllib.parse
import json
import joint
import cv2request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/body_analysis"
#使用不同的功能时在百度的相应说明文档处替换此处f = open('/home/zhengr/Documents/data/1.jpg', 'rb')
image = base64.b64encode(f.read())
image64 = str(image,'utf-8')
image_type = "BASE64"params = {'image': image64,'image_type':"BASE64"}params = urllib.parse.urlencode(params).encode("utf-8")access_token = '[24.fdd8df19e52da8ff449e1484aa582f42.2592000.1556250057.282335-15823849]'
request_url = request_url + "?access_token=" + access_token
#access token是每个人获得的,有效期30天?貌似request = urllib.request.urlopen(url=request_url, data=params)   # 发送请求content = request.read()  # 将返回结果读取出来
print(content)  # 显示返回结果
result = str(content,'utf-8')
res = json.loads(result)
print(res['person_info'][0]['body_parts'])
ress = res['person_info'][0]['body_parts']
jo = (ress)
jo.xunhun('/home/zhengr/Documents/data/1.jpg')

直接用python执行该程序就可以获得关键点识别结果,access token获得需要的代码:

#!/bin/bash
curl -i -k 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=QMLVBU3QbNA25XxawltynC1R&client_secret=GuwC9U5WTIbvWgo7ryolIB6Yy1e5H5Nx'

  其中的client_id和client_secret分别是注册百度平台时获得的API Key和Secret Key。执行以上文件,得到"access_token":"24.fdd8df19e52da8ff449e1484aa582f42.2592000.1556250057.282335-15823849"格式的即为自己的access token。以上代码中的joint.Joint()是网上的,其代码如下:

import cv2
import os
class Joint(object):__circle_list = []def __init__(self,dic):    self.dic = dicdef draw_line(self,img):#nose ---> neckcv2.line(img, (int(self.dic['nose']['x']),int(self.dic['nose']['y'])),(int(self.dic['neck']['x']),int(self.dic['neck']['y'])), (0,255,0), 2)#neck --> left_shouldercv2.line(img, (int(self.dic['neck']['x']),int(self.dic['neck']['y'])),(int(self.dic['left_shoulder']['x']),int(self.dic['left_shoulder']['y'])), (0,255,0), 2)        #neck --> right_shouldercv2.line(img, (int(self.dic['neck']['x']),int(self.dic['neck']['y'])),(int(self.dic['right_shoulder']['x']),int(self.dic['right_shoulder']['y'])), (0,255,0), 2)        #left_shoulder --> left_elbowcv2.line(img, (int(self.dic['left_shoulder']['x']),int(self.dic['left_shoulder']['y'])),(int(self.dic['left_elbow']['x']),int(self.dic['left_elbow']['y'])), (0,255,0), 2)         #left_elbow --> left_wristcv2.line(img, (int(self.dic['left_elbow']['x']),int(self.dic['left_elbow']['y'])),(int(self.dic['left_wrist']['x']),int(self.dic['left_wrist']['y'])), (0,255,0), 2)         #right_shoulder --> right_elbowcv2.line(img, (int(self.dic['right_shoulder']['x']),int(self.dic['right_shoulder']['y'])),(int(self.dic['right_elbow']['x']),int(self.dic['right_elbow']['y'])), (0,255,0), 2)          #right_elbow --> right_wristcv2.line(img, (int(self.dic['right_elbow']['x']),int(self.dic['right_elbow']['y'])),(int(self.dic['right_wrist']['x']),int(self.dic['right_wrist']['y'])), (0,255,0), 2)         #neck --> left_hipcv2.line(img, (int(self.dic['neck']['x']),int(self.dic['neck']['y'])),(int(self.dic['left_hip']['x']),int(self.dic['left_hip']['y'])), (0,255,0), 2)         #neck --> right_hipcv2.line(img, (int(self.dic['neck']['x']),int(self.dic['neck']['y'])),(int(self.dic['right_hip']['x']),int(self.dic['right_hip']['y'])), (0,255,0), 2)       #left_hip --> left_kneecv2.line(img, (int(self.dic['left_hip']['x']),int(self.dic['left_hip']['y'])),(int(self.dic['left_knee']['x']),int(self.dic['left_knee']['y'])), (0,255,0), 2)        #right_hip --> right_kneecv2.line(img, (int(self.dic['right_hip']['x']),int(self.dic['right_hip']['y'])),(int(self.dic['right_knee']['x']),int(self.dic['right_knee']['y'])), (0,255,0), 2)        #left_knee --> left_anklecv2.line(img, (int(self.dic['left_knee']['x']),int(self.dic['left_knee']['y'])),(int(self.dic['left_ankle']['x']),int(self.dic['left_ankle']['y'])), (0,255,0), 2)        #right_knee --> right_anklecv2.line(img, (int(self.dic['right_knee']['x']),int(self.dic['right_knee']['y'])),(int(self.dic['right_ankle']['x']),int(self.dic['right_ankle']['y'])), (0,255,0), 2)def xunhun(self,img):im1 = cv2.imread(img,cv2.IMREAD_COLOR)#im2 = cv2.resize(im1, (1040,768), interpolation=cv2.INTER_CUBIC)for i in self.dic:cv2.circle(im1,(int(self.dic[i]['x']),int(self.dic[i]['y'])),5,(0,255,0),-1)self.draw_line(im1)cv2.imshow('image',im1)cv2.waitKey(0)

使用这个代码,会有不准的时候,试了几张图片都会出现,有部分关键点的坐标是(0,0),这种在返回值里有不正确、正确的关键点问题,应该不是我能解决的,所以就没有再追究了。

如有不对的地方,欢迎批评指正,如有侵权,请联系我删除。

转载于:https://www.cnblogs.com/xiaoheizi-12345/p/10658936.html

使用百度API进行关键点识别相关推荐

  1. 树莓派+百度api实现人脸识别

    title: 树莓派+百度api实现人脸识别 tags: 树莓派 date: 2018-5-31 20:06:00 --- 树莓派对接百度api 我以前玩安卓的时候一直用的讯飞的平台和api,对于百度 ...

  2. 对接百度api之银行卡识别

    对接百度api之银行卡识别 1. 成为开发者 2. 创建应用 3. 获取密钥 4. 配置图像识别sdk 5. 调用银行卡识别接口 详情步骤参考链接 1. 成为开发者 三步完成账号的基本注册与认证: S ...

  3. 百度api做文字识别

    利用百度api进行文字识别 文章目录 利用百度api进行文字识别 前言 一.百度文字识别? 二.使用方法 1.参考官方文档自己写 2.我自己的代码记录 三.使用情况 当然也有一些问题: 四.总结 注意 ...

  4. 微信小程序编程(1)——使用百度API编写文字识别小程序

    编写思路 要使用百度等第三方API,我们得使用微信小程序提供的wx.request来向第三方平台发起请求,我们看到wx.request的参数属性里面url是必填项,接着我们打开和百度AI平台里面的通用 ...

  5. Python调用百度API进行身份证识别

    目录 1.作者介绍 2.基于百度API的身份证识别 2.1 百度ORC接口简介 2.2 算法介绍 2.2.1图像预处理 2.2.2身份证图像粗定位 2.2.3细定位各种信息和分割 2.2.4识别信息 ...

  6. python3调用百度API完成人脸识别,检测人种-年龄-性别-颜值-眼镜

    https://ai.baidu.com/docs#/Face-Detect/top 这个是百度人脸识别api 参考博客:https://blog.csdn.net/qq_38412868/artic ...

  7. opencv+python机读卡识别(四)百度API进行数字识别

    2019独角兽企业重金招聘Python工程师标准>>> 第一部分预处理:https://my.oschina.net/u/3268732/blog/1236298 第二部分图像切割: ...

  8. python实战篇(五)---百度api实现车型识别

    十二年来,有笑泪,有阴晴,相伴一场,人来人往,只是日常.--蔡康永 前言 api全称为应用程序接口,说白了就是别人写好了一个可实现功能的函数接口,我们可以直接调用来实现功能,今天,我们一起来学习,用百 ...

  9. Python实例之调用百度API实现车牌识别

    目录 1.作者介绍 2.车牌识别API介绍 3.实现过程 3.1 调用API 3.2 代码 参考 1.作者介绍 王世豪,男,西安工程大学电子信息学院,2020级硕士研究生,张宏伟人工智能课题组. 研究 ...

最新文章

  1. SpringBoot项目集成Mybatis Plus(一)多数据源配置
  2. android 实现论坛界面,android界面开发之主流UI布局范例
  3. how to clear screen in python shell
  4. 什么叫侧面指纹识别_哪种指纹识别方式好?侧边指纹识别可能会成为主流
  5. 如何准备面试中算法问题
  6. matlab中emd未定义,EMD的Matlab程序
  7. Win10系统利用注册表完美设置桌面图标的技巧
  8. matlab 矩阵分行标准化,matlab如何将矩阵标准化 命令是什么?
  9. 触摸屏与TSC2005触摸屏控制器
  10. mysql消除冗余_mysql剔除冗余数据
  11. python中add方法_python中add函数怎么用
  12. [玩游戏]-罪案现场全集打包下载
  13. 计算机运用基础2020四川传媒学院考题,2020年计算机基础考试题EY[含答案](15页)-原创力文档...
  14. 国产替代风潮下,电子元器件B2B商城系统如何助力企业突围市场竞争
  15. 中国移动号码手机开机以及注册gprs流程(转载)
  16. 【salesforce Admin必备】-想到啥写点啥
  17. 算法之美——求两直线交点(三维叉积)——求四边形面积(二维叉积)
  18. 船桨数学模型matlab,船用螺旋桨负载特性数字仿真
  19. 金融时间序列分析: 10. ARMA模型实例(R,Python)
  20. Vivado识别Flash型号失败

热门文章

  1. mysql user表修复_Mysql user表root用户误删除后恢复
  2. 二元偏导数存在的条件_多元函数 可导、可微、连续、一阶偏导数连续 之间关系的总结...
  3. python计算单词长度_Python - 按长度打印单词
  4. mysql的数据类型可分为哪两种_mysql数据类型分为哪几种
  5. 使用SuperSocket打造逾10万长连接的Socket服务
  6. 软工网络15团队作业4——Alpha阶段敏捷冲刺之Scrum 冲刺博客(Day5)
  7. 【深入JavaScript】3.JavaScript继承的实现总结
  8. 查看ubuntu版本
  9. c#实例-子线程查找另一线程模态对话框句柄(invoke测试)
  10. c#多线程同步之EventWaitHandle使用