利用百度API进行植物识别

news2024/11/27 18:50:12

植物识别_拍照识别植物-百度AI开放平台百度AI植物识别,支持识别超过2万种通用植物和近8千种花卉,接口返回植物的名称,并获取百科信息,适用于拍照识图类APP中https://ai.baidu.com/tech/imagerecognition/plant

偶然看到的,不过真的好用吗?试试就知道了,开干!

 

一、首先点上方链接去申请应用

 

有免费试用,随后得到ID和key

二、打开Vscode输入下方代码

import tkinter as tk
from tkinter import filedialog
import requests
import json
import base64

API_KEY = ""  #你的API Key
SECRET_KEY = "" #你的Secret Key

def main():
    root = tk.Tk()
    root.withdraw()  # 隐藏Tkinter窗口

    file_path = filedialog.askopenfilename()  # 打开文件选择对话框

    if file_path:
        classify_image(file_path)
    else:
        print("未选择文件。")

def classify_image(file_path):
    url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/plant?access_token=" + get_access_token()

    with open(file_path, 'rb') as file:
        image_data = file.read()

    base64_data = base64.b64encode(image_data).decode('utf-8')  # 将图像数据转换为Base64编码

    payload = {
        'image': base64_data,
        'baike_num': 1
    }

    headers = {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Accept': 'application/json'
    }

    response = requests.post(url, headers=headers, data=payload)

    if response.status_code == 200:
        result = json.loads(response.text)
        if 'result' in result:
            plant_info = result['result'][0]
            plant_name = plant_info['name']
            plant_baike = plant_info['baike_info']['description']

            print("植物名称:", plant_name)
            print("百科信息:", plant_baike)
        else:
            print("无法识别植物。")
    else:
        print("识别失败。")

def get_access_token():
    url = "https://aip.baidubce.com/oauth/2.0/token"
    params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}
    response = requests.post(url, params=params)
    
    if response.status_code == 200:
        access_token = response.json().get("access_token")
        return access_token
    else:
        print("获取访问令牌失败。")
        return None

if __name__ == '__main__':
    main()

 在这使用了base64.b64encode()方法将图像数据转换为Base64编码。在classify_image()函数中,创建一个payload字典,将Base64编码的图像数据和其他参数一起发送到API。注意这里将baike_num参数设置为1,以获取植物的百科信息。(可从本地选择图片)

 三、得到结果

不得不说还是挺准的 


Tip:如果遇到{error_code:18,error_msg:Open api qps request limit reached}报错,说明没去申请免费额度

结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/577205.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32F103C8T6+2.4寸SPI TFT触摸屏代码+标准库 项目开发

目录 模块清单: 模块介绍: 1:STM32F103C8T6 2:2.4寸SPI TFT触摸屏 项目结果展示 2.4寸 TFT SPI显示触摸屏 2.4寸 SPI TFT 显示触摸屏代码下载链接: (1条消息) 2.4寸SPITFT显示触摸屏资源-CSDN文库 模块清单&#x…

Vue后台管理系统【附源码】

登录 – 完成 路由拦截 – 完成 商品管理(增加、编辑、搜索、删除) – 完成 角色管理(增加、编辑、搜索、删除、权限管理) – 完成 交易订单(增加、编辑、搜索、删除) – 完成 用户管理(增加、编…

在Centos Stream 9上Docker的实操教程 - 实操准备篇

在Centos Stream 9上Docker的实操教程 - 实操准备篇 认识Docker准备Centos Stream 9安装Docker更新仓库绕不开的HelloWorld结语 认识Docker 什么都要实操了,你还不知道Docker是什么?网上关于Docker的介绍一搜一大把,博主就不必浪费时间去侃侃…

ESP32-OTA

文章目录 1. 什么是OTA?2. OTA的基本原理3. ESP32远程OTA步骤:3.1 将需要升级的程序放在该目录下3.2 启动HTTP服务器3.3 配置3.4 烧录程序3.5 上电测试ESP32端 4. 问题:5. 通过命令控制OTA6. 参考: 1. 什么是OTA? OTA…

如何用 GPT-4 帮你写游戏(以24点游戏举例)

目录 给我一个24点游戏 游戏规则 GPT给的代码 ​改进 再改进 最近呢掀起了一阵GPT-4的热潮,很多人都想用GPT-4,这里呢我就打一个广告(嘿嘿),如果不知道国内如何使用GPT的,可以看看这个博客:G…

STC89C52+DHT20设计的环境温湿度检测仪

一、项目背景 本项目基于STC89C52单片机和DHT20温湿度传感器,实现了一款环境温湿度检测仪。通过传感器采集环境的温度和湿度数据,利用IIC接口的OLED显示屏显示出来,便于用户实时监测环境温湿度状态。 在现代社会,人们对环境温湿度的要求越来越高。无论是工作场所还是居住…

局部特征匹配(LoFTR) 基于全局匹配的光流学习(GMFlow)

文章目录 特征匹配(稀疏匹配与稠密匹配)《LoFTR: Detector-Free Local Feature Matching with Transformers》【CVPR21】《GMFlow: Learning Optical Flow via Global Matching》【CVPR22】光流的定义第一个问题第二个问题方法该框架下存在的一个问题 Pr…

智慧园区管理平台优势详解

随着数字化和智能化的时代到来,越来越多的园区开始使用智慧园区管理平台来提高管理效率,降低管理成本和提升服务质量。智慧园区管理平台是一种通过智能化技术与物联网技术进行连接,对园区进行综合管理、智能化监控的信息化平台。下面将详细介…

大数据:云平台,阿里云VPC创建,创建安全组,云服务器ECS,

大数据:云平台 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学&…

Seata之@GlobalTransactional验证

下订单 -> 减库存 -> 扣余额 -> 改(订单)状态 1.数据库初始情况: 2.正常下单 http://localhost:2001/order/create?userId1&productId1&count10&money100 3.超时异常,没加GlobalTransactional 模拟Accou…

RabbitMQ系列(24)--RabbitMQ集群搭建

前言:当RabbitMQ服务器遇到内存崩溃、机器掉电或者主板故障等情况,该怎么办?单台RabbitMQ服务器可以满足每秒1000条消息的吞吐量,那如果应用需要RabbitMQ服务满足每秒10万条消息的吞吐量呢?购买昂贵的服务器来增强单机RabbitMQ服务的性能不…

阿里云ECS部署chat-web代理访问

1、ECS服务器申请 使用阿里云账号购买了一个美国(弗吉尼亚)的2C/2G的CentOS7.9 x64服务器。 2、系统版本升级 CentOS7.9默认的python和pip版本都是3.6的,需要升级到3.9以上,升级步骤百度,大致如下: wget…

vue diff算法与虚拟dom知识整理(12) patch精细化比较新增子节点

上文中我们编写了patch函数中对相同节点的几种处理 将简单的都写完了 但还留下了最麻烦的子节点比较 既新旧节点都有子节点 需要 精细化比较 我们先将src下的入口文件index.js 代码改成这样 import h from "./snabbdom/h"; import patch from "./snabbdom/pat…

C++实现Canny边缘检测(原理+底层代码)

文章目录 一、算法原理二、环境配置三、算法详解3.1、数据结构 Mat3.2、高斯滤波器的C实现3.3、用一阶偏导有限差分计算梯度幅值和方向 三、项目实战:C实现Canny边缘检测 一、算法原理 canny边缘检测算法步骤: 1、使用高斯滤波器对图像进行平滑处理。 2、…

recurdyn履带问题

1.问题:整车履带仿真出错,车辆越障时遇到障碍物直接弹开 思路: 关于这类模型需要调节履带和地面之间的接触参数、Bushing force,还有驱动函数。 弹飞了是因为接触刚度太大了,调小一些,在100以内继续调节…

从代码角度理解DETR

一个cnn的backbone, 提图像的feature, 比如, HWC.同时对这个feature做position_embedding.然后二者相加 (在Transformer里面就是二者相加)输入encoder,输入decoder (这里有object queries.)然后接Prediction Heads, 比如分类和回归. 下面的代码参考自: https://github.com/fac…

单片机原理及应用——持续更新

目录 一、单片机概述 1、单片机简介 2、单片机的特点 3、MSC-51系列与AT89S5x系列单片机 (1)MSC-51系列单片机 (2)AT89S5x系列单片机 二、AT89S52单片机的片内硬件结构 1、AT89S52单片机的硬件组成 2、AT89S52单片机的引…

Springboot +spring security,OAuth2 四种授权模式概念

一.简介 这篇文章来讲下Spring Security OAuth2 四种授权模式。 二.什么是OAuth2 OAuth 2.0 是一种用于授权的开放标准,允许用户授权第三方应用程序访问他们的资源,例如照片、视频或其他个人信息。OAuth 2.0 提供了一些不同的授权模式,包括…

我有一个朋友,分享给我的字节跳动测试开发真题

朋友入职已经两周了,整体工作环境还是非常满意的!所以这次特意抽空给我写出了这份面试题,而我把它分享给小伙伴们,面试&入职的经验! 大概是在3月中的时候他告诉我投递了简历,5月的时候经过了3轮面试收获…

Windows10中搭建ftp服务器以实现文件传输

开启ftp服务: 1、打开控制面板》程序和功能》 启用或关闭Windows功能 2、找到Internet Information Services,开启以下服务 勾选之后,ftp服务开启成功。 配置IIS,搭建ftp 1、WinS键搜索iis,回车打开》右击网站 》添加…