百度AI开放平台和高德开放平台的使用
目录
1.百度AI开放平台
1.1语音合成
1.2语音识别
1.3人脸识别
1.4文字识别
1.4.1手写文字识别
1.4.2 身份证识别
1.5人体检测
2.高德开放平台
2.1天气查询
2.2地理编码/逆地理编码
2.3路径规划
1.百度AI开放平台
百度AI开放平台的使用主要分为5步。先登录账号,再创建应用、获取密钥、生成签名,最后开发调用。
应用是调用API服务的基本操作单元,需要先创建应用才可正式调用AI能力,基于应用创建成功后获取的API Key及Secret Key,进行接口调用操作,及相关配置。使用创建应用所分配到的AppID、API Key及Secret Key,进行Access_Token(用户身份验证和授权的凭证)的生成。
1)登录百度AI开放平台:百度智能云-登录
点击左上角蓝色按钮,选择对应的产品服务
2)创建一个应用,应用名称和应用描述随便填写即可,勾选需要的服务接口(一个应用可以实现多种功能),创建完成后就能得到AppID,API Key,Secret Key;
3)在“概览”中领取免费资源;
4)获取access_token(注意每次获取的access_token 30天就会过期,必须重新获取一次)
import requests
API_KEY = '复制创建的应用的API_KEY'
SECRET_KEY = '复制创建的应用的SECRET_KEY' host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials' + \'&client_id=' + API_KEY + \'&client_secret=' + SECRET_KEY
response = requests.get(host)
if response:token = response.json()['access_token']print(token)
百度AI开放平台提供了很多产品功能,这里挑出几个做示范。
1.1语音合成
from aip import AipSpeech
APP_ID = '你的APP_ID'
API_KEY = '你的API_KEY'
SECRET_KEY = '你的SECRET_KEY'client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
word = '你好'
result = client.synthesis(word, 'zh', 1,{'vol': 5})
if not isinstance(result, dict):with open('test.mp3', 'wb') as f:f.write(result)
上面的代码生成了一个test.mp3的音频文件,内容为“你好”。更多参数请参考:https://ai.baidu.com/ai-doc/SPEECH/Qk38y8lrl
1.2语音识别
# encoding:utf-
import base64
import pyaudio,wave
from aip import AipSpeech
APP_ID = '你的APP_ID'
API_KEY = '你的API_KEY'
SECRET_KEY = '你的SECRET_KEY'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)def record(): # 录音chunk = 1024 sample_format = pyaudio.paInt16channels = 1fs = 16000 seconds = 3 # 录音时长为3秒p = pyaudio.PyAudio()print('开始录音')stream = p.open(format=sample_format,channels=channels,rate=fs,frames_per_buffer=chunk,input=True)frames = []for i in range(0, int(fs / chunk * seconds)):data = stream.read(chunk)frames.append(data)stream.stop_stream()stream.close()p.terminate()print('录音结束')wf = wave.open("audio.pcm", 'wb')wf.setnchannels(channels)wf.setsampwidth(p.get_sample_size(sample_format))wf.setframerate(fs)wf.writeframes(b''.join(frames))wf.close()def get_file_content(filePath): # 读取文件with open(filePath, 'rb') as fp:return fp.read()if __name__ == '__main__':record()result = client.asr(get_file_content('audio.pcm'), 'pcm', 16000, {'dev_pid': 1537,})answer=result['result'][0].strip('。')print(answer)
1.3人脸识别
在应用的可视化人脸库中新建用户组,加入用户照片
import base64
from aip import AipFace
APP_ID = '你的APP_ID'
API_KEY = '你的API_KEY'
SECRET_KEY = '你的SECRET_KEY'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)def fileopen(filepath): #打开图片with open(filepath, 'rb') as f:data = base64.b64encode(f.read())image = str(data,'utf-8')return imagedef face_search(filepath,groupIdList): #人脸库搜索groupIdList="你的用户组名称"image = fileopen(filepath)imageType="BASE64"data=client.search(image,imageType,groupIdList)result = data.get('result')if result:if result['user_list'][0]['score'] >70 :return result['user_list'][0]['user_id'] #打印识别出来的姓名else :return Noneif __name__ == '__main__':print(face_search('test.jpg','test')) # 替换图片名称和人脸库用户组名称
1.4文字识别
1.4.1手写文字识别
import requests
import base64
request_url = " https://aip.baidubce.com/rest/2.0/ocr/v1/handwriting"
f = open('test.jpg', 'rb') # 替换成自己的图片文件
img = base64.b64encode(f.read())
params = {"image":img}
access_token = '【获取的access_token】'
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:answer=response.json()['words_result'][0]['words']print(answer)
1.4.2 身份证识别
import base64
import requests
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard"
f = open('test.jpg', 'rb') # 替换成自己的图片文件
img = base64.b64encode(f.read())
params = {"id_card_side":"front","image":img}
access_token = '【获取的access_token】'
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:print (response.json()['words_result']['姓名']['words'])
1.5人体检测
对于输入的一张图片(可正常解码,且长宽比适宜),检测图像中的所有人体并返回每个人体的矩形框位置,识别人体的静态属性和行为,共支持17种属性,包括:性别、年龄阶段、上下身服饰(含类别/颜色)、是否戴帽子、是否戴口罩、是否背包、是否吸烟、是否使用手机、人体朝向等。具体接口返回参数信息参考https://ai.baidu.com/ai-doc/BODY/Ak3cpyx6v。
import requests
import base64
request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/body_attr"
f = open('test.jpg', 'rb') # 替换成自己的图片文件
img = base64.b64encode(f.read())
params = {"image":img}
access_token = '【获取的access_token】'
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:print (response.json())# 举例:判断是否佩戴口罩if int(response.json()['person_num'])>0:ismask = response.json()['person_info'][0]['attributes']['face_mask']['name']if ismask == "无口罩" or "不确定":print("请佩戴口罩!")
上面的识别很可能用到拍照,把代码放在下面,需要的话可以调用。
import cv2
def takephoto(photo): #拍照,照片存为photo.jpgcap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # 打开摄像头while (1):ret, frame = cap.read()frame = cv2.flip(frame, 1) # 摄像头是和人对立的,将图像左右调换回来正常显示cv2.imshow("capture", frame) # 生成摄像头窗口if cv2.waitKey(1) & 0xFF == ord('q'): # 如果按下q 就截图保存并退出cv2.imwrite(photo+'.jpg', frame) # 保存路径breakcap.release()cv2.destroyAllWindows()
takephoto('test') # 拍照并存储为'test.jpg'
2.高德开放平台
高德开放平台的使用分为3步:
第一步,申请Web服务API类型Key;
第二步,参考接口参数文档发起HTTP/HTTPS请求,第一步申请的 Key 需作为必填参数一同发送;
第三步,接收请求返回的数据(JSON或XML格式),参考返回参数文档解析数据。
2.1天气查询
import requests
import xlrd
def sfe(ans,flag=0):book=xlrd.open_workbook('citycode.xls')sh=book.sheet_by_index(0)nrow=sh.nrowsadcode='110000'for i in range(1,nrow):data=sh.row(i)cellcheck=sh.cell_value(i,flag)if ans in cellcheck:adcode=sh.cell_value(i,1)breakreturn adcodedef Weather(adcode):request_url = "https://restapi.amap.com/v3/weather/weatherInfo?city="+adcode+"&key=【你的key】"response = requests.get(request_url)str_weather = "未知"if response:str_weather=response.json()['lives'][0]['weather']return str_weathercity=input("请输入要查询的城市:")
adcode = sfe(city)
weather = Weather(adcode)
print(city+"的天气为"+weather)
更多返回结果参数请参考天气查询-API文档-开发指南-Web服务 API | 高德地图API
2.2地理编码/逆地理编码
import requests
def getLocation(address): # 地理编码request_url="https://restapi.amap.com/v3/geocode/geo?address="+address+"&key=【你的key】"response=requests.get(request_url)str_location="未知"if response:str_location=response.json()['geocodes'][0]['location']return str_locationdef getAddress(location): # 逆地理编码request_url="https://restapi.amap.com/v3/geocode/regeo?location="+location+"&key=【你的key】"response=requests.get(request_url)str_location="未知"if response:str_location=response.json()['regeocode']['formatted_address']return str_location
更多返回结果参数请参考地理/逆地理编码-API文档-开发指南-Web服务 API | 高德地图API
2.3路径规划
更多详细信息请参考路径规划-API文档-开发指南-Web服务 API | 高德地图API
路径规划可分为步行、驾车、公交、骑行等方面,下面以步行和公交路径规划为例,不同的规划只需要改变url和parameters,输出response.json(),解析JSON格式的数据,选择需要的信息。
import requests
def walkplan(): # 步行路线规划url = 'https://restapi.amap.com/v3/direction/walking?parameters'parameters = {'key': '【你的key】','origin': str(from_location), # 起始地点的经纬度'destination': str(to_location) # 目的地的经纬度}response = requests.get(url, parameters)if response:# print(response.json())count = response.json()['count']distance = response.json()['route']['paths'][0]['distance']duration = int(int(response.json()['route']['paths'][0]['duration'])/60) # 精确到分钟print("全程"+distance+"米,步行时间预计"+str(duration)+"分钟")print("共查询到"+count+"种方案")for i in range(0,int(count)):length = len(response.json()['route']['paths'][i]['steps'])instruction=[]for j in range(0,length):instruction.append(response.json()['route']['paths'][i]['steps'][j]['instruction'])print("第"+str(i+1)+"种方案的步行导航为:")print(instruction)instruction.clear()def busplan(): # 公交路线规划url = 'https://restapi.amap.com/v3/direction/transit/integrated?parameters'parameters = {'key': '【你的key】','origin': str(from_location), # 起始地点的经纬度'destination': str(to_location) # 目的地的经纬度'city':'' # 城市/跨城规划时的起点城市}response = requests.get(url, parameters)if response:# print(response.json())json=response.json()count = json['count']transits = json['route']['transits']print("共查询到"+count+"种方案")for i in range(0,int(count)):print("方案"+str(i+1)+":")cost = transits[i]['cost']walkdistance = transits[i]['walking_distance']name = transits[i]['segments'][0]['bus']['buslines'][0]['name']station = transits[i]['segments'][0]['bus']['buslines'][0]['via_num']print("票价为"+str(cost)+"元")print("需要步行的距离为"+walkdistance+"米")print("公交名称为:"+name)print("需要经过"+station+"个站点")sta=[]for j in range(0,int(station)):sta.append(transits[i]['segments'][0]['bus']['buslines'][0]['via_stops'][j]['name'])print(sta)sta.clear()
百度AI开放平台和高德开放平台的使用相关推荐
- 百度AI长语音识别技术免费开放,调用时长不再受限
原标题:百度AI长语音识别技术免费开放,调用时长不再受限 前几天看到一条祝福:祝大家早日成为可以在公司群里随心所欲发语音的人 . 显然,微信群聊(特别是家族群.客户群.公司群)里的语音消息,并不是谁想 ...
- Face++人工智能开放平台、百度AI、腾讯优图平台比较
平台整体展示: 百度AI平台展示了产品服务.解决方案.案例场景.资源中心.合作伙伴.AI加速器.资讯.社区板块..,百度AI平台战略的两大核心是阿波罗Apollo平台和DuerOS对话式人工智能系统, ...
- 百度AI智能小程序正式开放申请
web前端教程 用大白话,来讲编程 9月25日,百度宣布智能小程序开放申请. 百度作为移动互联网的流量巨头,在宣布推出智能小程序的第一天就被大量开发者看好,很多小程序开发者早已跃跃欲试,就等着开放申请 ...
- 这届百度AI究竟什么水平?
2019-12-16 14:16:41 乾明 发自 凹非寺 量子位 报道 | 公众号 QbitAI 这届百度AI究竟啥水平? 作为布局最早.声量最高,也最受国内外关注的中国头号玩家,此问已非一日. ...
- GPU算力免费用?百度AI Studio两周年惊喜活动开启
对于开发者而言,两年意味着什么呢? 两年也可能让一个算法从领先时代到被时代领先:两年可以伴随一家籍籍无名的公司,成长为业内的一匹黑马:两年,也可以让一个初出茅庐的AI平台摇身一变成为中国AI人才培养的 ...
- 探寻AI未来式,百度AI Studio两周年寻最强锦鲤送超大惊喜
对于开发者而言,两年意味着什么呢? 两年可能让一个算法从领先时代到被时代领先:两年可以伴随一家籍籍无名的公司,成长为业内的一匹黑马:两年,也可以让一个初出茅庐的AI平台摇身一变成为中国AI人才培养的先 ...
- 百度AI接入api使用流程
文章目录 前言 使用步骤 1.创建应用获取AK(API Key),SK(Secret Key) 1.1进入: [百度AI 官网](https://ai.baidu.com/),在开放能力下面找到:人像 ...
- 百度AI 实现人体姿态检测
最近在搞人脸识别,Yolo,Dlib,单纯向量法都玩了一遍,效果还可以. 昨天由老师给我发了一个百度AI的链接,我就玩开了上面的一个demo,叫做人体姿态检测出,这个名词名副其实,其背后的数学原理和论 ...
- 百度AI开放平台3.0:平等赋能成为百度AI关键词
"让每一位开发者都能平等便捷地获取AI能力是我们的愿景,也是我们的承诺.我们非常感谢各位合作伙伴.开发者使用百度的AI能力,让人们的生活更便捷.让学习更有趣.让企业管理更高效.让人类更健康. ...
最新文章
- idea(3)-jetty配置
- 宏基因组扩增子3统计绘图:中文首发,最详系,零基础(箱线图、散点图、热图、曼哈顿图、火山图、韦恩图、三元图、网络图)
- 内嵌资源html,内嵌元素(HTML)
- h5 跳转上个页面刷新_关于javascript跳转与返回和刷新页面
- List中subList方法抛出异常java.util.ConcurrentModificationException原理分析
- html5纪念日期代码,HTML5适合的情人节礼物有纪念日期功能
- 学习记录-Linux内核模块查看命令
- 删除有序数组中的重复项 IIPython解法
- 没有bug队——加贝——Python 练习实例 35,36
- Python利用描述符进行属性访问控制,完成属性数据类型强制定义(如C语言)、属性读写及删除操作
- 《编码规范和测试方法——C/C++版》学习笔记 ·002
- .NET四种注释规范
- Servlet中forward和redirect的区别
- 通过Visual Studio 2012 比较SQL Server 数据库的架构变更
- gg修改器修改数值没有用怎么办_gg修改器修改游戏数值教程_gg修改器怎么修改数值_咖绿茵手游站...
- 英特尔的指令集体系结构_Intel MIC初探(一):MIC架构及编程模型概览
- python下载安装图文教程-Pycharm下载安装图文教程
- 课堂派“互动课件”文件下载
- EasyRTMP手机直播推流到EasyDSS进行RTMP直播过程中分辨率反复切换崩溃问题解决
- 企业微信如何开启全员群?
热门文章
- A002-186-2629-赖海洲
- 尝试将简易网站部署到synology群晖服务器
- Qt开发——QWebEngineView简易网络浏览器(二)
- LED魔方屏的制造工艺跟安装步骤分析
- 明星热图|宋轶、辛芷蕾、王丽坤等演绎服饰新品;肖战代言李宁;林俊杰献唱迪士尼经典歌曲...
- MES系统中生产计划模块的重要作用
- Drools(1):Drools简介
- 『2月特刊』伟大的朋友丨拿破仑(2)
- python正则group()与groups()用法
- MS17-010(Eternal blue永恒之蓝)漏洞利用+修复方法