【Python&目标识别】调用百度智能云API实现植被识别
百度智能云于2015年正式对外开放运营,以“云智一体”为核心赋能千行百业,致力于为企业和开发者提供全球领先的人工智能、大数据和云计算服务及易用的开发工具。凭借先进的技术和丰富的解决方案,全面赋能各行业,加速产业智能化。百度智能云为金融、制造、能源、城市、医疗、媒体等众多领域的领军企业提供服务,其中包含大量的API接口以及非常成熟的技术指导,适合各个行业的应用开发。(百度百科)
由于作者最近在做植被识别方面的项目,所以将项目中使用过的代码和经验分享出来,与大家一起交流学习。
一、获取token
1.首先要去百度智能云的官网,创建应用。获取需要的API Key和Secret Key。
在官网中找到产品中的图像技术的植物识别,跳转页面后点击“立即使用”,之后在“应用列表”中创建应用。创建完成后就可以看到应用的API Key和Secret Key,这两个用于Token的获取。
2.Python编写代码获取Token
有了API Key和Secret Key后就可以编写Python代码,实现Token的获取了。官方指导文档中也有相应的方法,我这里直接展示我的代码,代码中有注释。
def Get_Token(client_id, client_secret):
"""
:param client_id: 输入API Key
:param client_secret: 输入Secret Key
:return: 返回token
"""
print("正在获取Token......")
try:
url_token = f'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials' \
f'&client_id={client_id}&client_secret={client_secret}'
# 请求地址
respond = requests.post(url_token)
# 请求方式
token = respond.json()["access_token"] # result = response.json()
return token
except Exception as e:
print("Error:获取Token失败!")
print(e)
二、图片转码
由于官方文档中请求图片的参数只能是URL或是Base64编码的图片,所以这里需要对本地图片进行转码。
Python代码:
f = open('G:/1.jpg', 'rb')
# 图片路径按照自己的来
img = base64.b64encode(fn.read())
# 将图片转至base64编码
params = {"image": img}
# 将图片转为对象
三、图片识别
前面的准备工作完成后就可以调用百度智能云的接口进行图片中植物的识别了。接口返回的数据中包括多个对象,对应不同的置信度(如图片中植物是韭菜的置信度是0.9,小麦的置信度是0.1,说明植物大概率是韭菜)。官方指导文件中也有相应的案例,可以去参考一下。
Python代码:
try:
headers = {'content-type': 'application/x-www-form-urlencoded'}
url_Identify_image = f'https://aip.baidubce.com/rest/2.0/image-classify/v1/plant?access_token={token}'
respond = requests.post(url_Identify_image, data=params, headers=headers)
data = respond.json()
if respond:
for i in range(0, len(data['result'])):
# 遍历植物的所有可能性
print("置信度:%s,%s" % (data['result'][i]['score'], data['result'][i]['name']))
return data
else:
print("Error:请求响应失败!")
except Exception as e:
print("Error:识别图片失败!")
print(e)
四、代码组合
上面是分步的代码,接下来展示完整代码。运行时只需要修改API Key、Secret Key和图片路径即可。
import requests
import base64
# 图片转码模块
import tkinter.filedialog
# 创建窗口打开图片模块
def Get_Token(client_id, client_secret):
"""
:param client_id: 输入API Key
:param client_secret: 输入Secret Key
:return: 返回token
"""
print("正在获取Token......")
try:
url_token = f'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials' \
f'&client_id={client_id}&client_secret={client_secret}'
# 请求地址
respond = requests.post(url_token)
# 请求方式
token = respond.json()["access_token"] # result = response.json()
return token
except Exception as e:
print("Error:获取Token失败!")
print(e)
def Identify_image(token):
"""
:param token: 输入token
:return: 返回植被信息
"""
f = open('G:/1.jpg', 'rb')
img = base64.b64encode(f.read())
# 将图片转至base64编码
params = {"image": img}
# 将图片转为对象
print("开始识别图片......")
try:
headers = {'content-type': 'application/x-www-form-urlencoded'}
url_Identify_image = f'https://aip.baidubce.com/rest/2.0/image-classify/v1/plant?access_token={token}'
respond = requests.post(url_Identify_image, data=params, headers=headers)
data = respond.json()
if respond:
for i in range(0, len(data['result'])):
print("置信度:%s,%s" % (data['result'][i]['score'], data['result'][i]['name']))
return data
else:
print("Error:请求响应失败!")
except Exception as e:
print("Error:识别图片失败!")
print(e)
if __name__ == "__main__":
loginName = "###"
# API Key,自己获取
password = "###"
# Secret Key,自己获取
token = Get_Token(loginName, password)
print("Token已获取成功......")
print()
Identify_image(token)
print("识别成功")
本人才疏学浅,代码有不足的地方希望大家多多包涵。如果代码有问题或者有不懂的地方可以随时留言,一起学习交流Python方面的知识。
本文章仅作为学习交流使用,API为百度智能云开放使用的,如有侵权请联系作者删除!
【Python&目标识别】调用百度智能云API实现植被识别的更多相关文章
- 百度智能云 API调用PythonSDK
百度智能云 API调用PythonSDK 这是一个用于百度云部分开放AI功能的Python库.主要为ORC功能,可以对各种图像文件进行文字识别,包括车牌.手写文字.通用文字.人脸发现.人脸比对和人流量 ...
- 最新2019Java调用百度智能云人脸识别流程
首先先注册账户 https://console.bce.baidu.com/?fromai=1#/aip/overview 点击链接 有账户直接登录 如无 则注册 进入控制台后 点击人脸识别 随便选 ...
- 基于百度智能云api下的车牌识别系统
车牌识别在高速公路中有着广泛的应用,比如我们常见的电子收费(ETC)系统和交通违章车辆的检测,除此之外像小区或地下车库门禁也会用到,基本上凡是需要对车辆进行身份检测的地方都会用到. 简介 车牌识别系统 ...
- 百度智能云平台调用食物识别api Java实现
纪录一下我小学期2天花了20小时写的菜品识别java程序. 1.2. 百度智能云简介 1.2.1 百度图像识别服务 百度图像识别服务,基于深度学习及大规模图像训练,准确识别图片中的物体类别.位置.置信 ...
- 利用百度智能云结合Python体验图像识别(转载来自qylruirui)
https://blog.csdn.net/qylruirui/article/details/94992917 利用百度智能云结合Python体验图像识别只要注册了百度账号就可以轻松体验百度智能云中 ...
- laravel7 百度智能云检测内容及图片
1:百度智能云,获取AppID,API Key,Secret Key https://console.bce.baidu.com/ai/?_=1642339692640&exraInfo=ai ...
- 基于百度智能云的OCR接口进行图文识别
由于一些客户的内部系统需要提取一些记录信息,如果手工录入会变得比较麻烦,因此考虑使用百度云的OCR进行图片文字的提取处理,综合比较了一下开源免费的Tesseract 类库进行处理,不过识别效果不太理想 ...
- Java对接百度智能云人脸识别
------------------------->这篇文章就是自己做个笔记<------------------------- 首先登录or注册自己的百度智能云管理中心:https:// ...
- QT调用百度语音REST API实现语音合成
QT调用百度语音REST API实现语音合成 1.首先点击点击链接http://yuyin.baidu.com/docs/tts 点击access_token,获取access_token,里面有详细 ...
- HTML实现调用百度在线翻译API
HTML实现调用百度在线翻译API 本文章已收录于: <!doctype html> <html lang="en"> <head> < ...
随机推荐
- vue双向监听proxy
console.log('判断页面是否有滚动条', this.hasScrollbar) const that = this that.count = 0 // 计数 that.scrollProxy ...
- 【Avalonia】【跨平台】关于控件阴影简单用法
背景 当我们在用Avalonia开发项目时,我们可能会对控件添加一些阴影效果,改善用户体验,我们开发WPF的人知道,WPF会给我提供Effect这么一个属性,这是方便我们进行阴影以及特效使用,但是Av ...
- 重磅!Apache Hudi联合传智教育推出免费中文视频教程
基础介绍 Apache Hudi(简称:Hudi)使得您能在hadoop兼容的存储之上存储大量数据,同时它还提供两种原语,使得除了经典的批处理之外,还可以在数据湖上进行流处理.这两种原语分别是: Up ...
- go微服务框架kratos学习笔记三(构建单独的http或者grpc demo项目)
go微服务框架kratos学习笔记三(构建单独的http或者grpc demo项目) 前面两篇跑通了demo项目,和大概了解了kratos demo整体结构,本篇分别构建一个http和一个grpc微服 ...
- 帝国cms随机sql语句,mysql高效的随机查询
select * from AppleStorewhere rand()<0.015limit 100;
- TypeScript 引用资源文件后提示找不到的异常处理
在tsx中引用图片,在文件文本编辑器中提示错误引用: typescript无法识别非代码文件(js是可以的).如果需要在ts中识别此文件资源,可以先声明文件类型. 新建一个ts文件,比如global. ...
- MySQL高频面试题
什么是MySQL MySQL是一个关系型数据库,它采用表的形式来存储数据.你可以理解成是Excel表格,既然是表的形式存储数据,就有表结构(行和列).行代表每一行数据,列代表该行中的每个值.列上的值是 ...
- 2022-11-10:写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率。 为了简单起见,你可以假设: words.txt只包括小写字母和 ‘ ‘ 。 每个单词只由小写
2022-11-10:写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率. 为了简单起见,你可以假设: words.txt只包括小写字母和 ' ' . 每个单词只由小写 ...
- 2020-10-01:谈谈golang的空结构体。
福哥答案2020-10-01:#福大大架构师每日一题# 1.map.value是空结构体,构造集合. 2.通道.只传递信号,不传递数据. 3.切片.不管切片多长,都不会占用空间. 4.仅包含方法的结构 ...
- 2021-02-19:给定一个二维数组matrix,一个人必须从左上角出发,最后到达右下角。沿途只可以向下或者向右走,沿途的数字都累加就是距离累加和。请问最小距离累加和是多少?
2021-02-19:给定一个二维数组matrix,一个人必须从左上角出发,最后到达右下角.沿途只可以向下或者向右走,沿途的数字都累加就是距离累加和.请问最小距离累加和是多少? 福哥答案2021-02 ...