【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> < ...
随机推荐
- fork语句遇见for循环语句
一.没有automatic的fork-join_none 通常小白会这么写: 代码如下: foreach(a[i]) begin fork repeat(a[i]) #1ns; $display(&q ...
- vue中的v-model 与 .sync
<input v-model="parentData"> //等同于 <input :value="parentData" @input=&q ...
- 地图:leaflet基本使用
leaflet:一个开源并且对移动端友好的交互式地图 JavaScript 库 中文文档:https://leafletjs.cn/reference.html 官网(英文):https://icli ...
- apt-get update报“Temporary failure resolving '***.com/cn'
解决办法: 1.打开/etc/resolv.conf: $sudo vim /etc/resolv.conf 2.修改nameserver即DNS服务器: 我这里使用腾讯云和阿里云的DNS 加入: n ...
- CTF-RE-学习记录-汇编
八进制运算 加法表 1+1=2 1+2=3 2+2=4 1+3=4 2+3=5 3+3=6 1+4=5 2+4=6 3+4=7 4+4=10 1+5=6 2+5=7 3+5=8 4+5=11 5+5= ...
- 安装部署keepalived的HA环境
每一台配置下keepalived #master01 配置: cat >/etc/keepalived/keepalived.conf<<"EOF" ! Conf ...
- 关于Java中泛型的上界和下界理解
既然聊到了泛型的上下界问题,就先给出几个类的继承关系吧 class Fruit{}class Apple extends Fruit{}class Orange extends Fruit{}clas ...
- Terraform 系列-Terraform Cloud 比 Terraform OSS 有哪些增强?
系列文章 Terraform 系列文章 前言 最近在使用 Terraform Cloud 来置备 OCI 的 Always Free Tier, 发现它非常好用,相比 Terraform OSS, 用 ...
- 【Mybatis】(一)
Mybatis简介 提供持久层框架包括SQL Maps和Data Access Objects(DAO). SQL Maps提供数据库数据和java数据的映射关系,换句话说即是封装JDBC的过程. D ...
- day01-项目介绍&功能实现
项目介绍&功能实现 1.项目介绍&环境搭建 一个以社交平台为核心的轻电商项目,功能如下: 短信登录.商户查询缓存.优惠券秒杀.达人探店.好友关注.附近的商户.用户签到.UV统计 1.1 ...