当前位置: 首页 > news >正文

Uniapp+基于百度智能云完成AI视觉功能(附前端思路)

本博客使用uniapp+百度智能云图像大模型中的AI视觉API(本文以物体检测为例)完成了一个简单的图像识别页面,调用百度智能云API可以实现快速训练模型并且部署的效果。

uniapp+百度智能云AI视觉页面实现

  • 先上效果图
  • 实现过程
    • 百度智能云Easy DL训练图像模型
    • 公有云服务发布API
    • 调用AI视觉API
      • EasyDL 物体检测 调用模型公有云API Python3实现
      • Uniapp 调用模型公有云API Vue2实现
        • image-tools 图像转换工具
        • 图像识别实现方法
        • 页面结构示例

先上效果图

从相册选择图片后上传后,点击识别,即可进行虫害识别。
虫害名称识别

实现过程

百度智能云Easy DL训练图像模型

首先,你可能需要有一个百度智能云的账号,如果没有的话,指路:百度智能云
这是Easy DL给出的介绍:训练模型的基本流程如下图所示,全程可视化简易操作。在数据已经准备好的情况下,最快15分钟即可获得定制模型。
官方文档:Easy DL 文档中心
百度智能云使用流程
数据处理——模型训练——模型校验——模型部署等步骤跟着官方文档走就好了,进入平台后各种操作指引都做的很好;根据你的具体业务场景训练模型即可。

公有云服务发布API

发布公有云服务,将训练完成的模型部署在百度云服务器,通过API接口调用模型。如果在这里你选择了将模型部署在公有云,则需要自定义服务名称、接口地址后缀等,发布服务。
发布新服务
接口文档(以物体检测为例,其他接口文档在左侧目录也可以找到):物体检测接口文档

调用AI视觉API

EasyDL 物体检测 调用模型公有云API Python3实现

以下代码为Python3调用公有云API的实现过程,注意:目标图片、接口地址、token、api_key、secret_key都需要根据你的情况进行更改,否则代码无法运行!


"""
EasyDL 物体检测 调用模型公有云API Python3实现
"""import json
import base64
import requests
"""
使用 requests 库发送请求
使用 pip(或者 pip3)检查我的 python3 环境是否安装了该库,执行命令pip freeze | grep requests
若返回值为空,则安装该库pip install requests
"""# 目标图片的 本地文件路径,支持jpg/png/bmp格式
IMAGE_FILEPATH = "你的图片.jpg"# 可选的请求参数
# threshold: 默认值为建议阈值,请在 我的模型-模型效果-完整评估结果-详细评估 查看建议阈值
PARAMS = {"threshold": 0.3}# 服务详情 中的 接口地址
MODEL_API_URL = "你的接口地址"# 调用 API 需要 ACCESS_TOKEN。若已有 ACCESS_TOKEN 则于下方填入该字符串
# 否则,留空 ACCESS_TOKEN,于下方填入 该模型部署的 API_KEY 以及 SECRET_KEY,会自动申请并显示新 ACCESS_TOKEN
ACCESS_TOKEN = "你的token"
API_KEY = "你的SK"
SECRET_KEY = "你的AK"print("1. 读取目标图片 '{}'".format(IMAGE_FILEPATH))
with open(IMAGE_FILEPATH, 'rb') as f:base64_data = base64.b64encode(f.read())base64_str = base64_data.decode('UTF8')
print("将 BASE64 编码后图片的字符串填入 PARAMS 的 'image' 字段")
PARAMS["image"] = base64_strif not ACCESS_TOKEN:print("2. ACCESS_TOKEN 为空,调用鉴权接口获取TOKEN")auth_url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials"               "&client_id={}&client_secret={}".format(API_KEY, SECRET_KEY)auth_resp = requests.get(auth_url)auth_resp_json = auth_resp.json()ACCESS_TOKEN = auth_resp_json["access_token"]print("新 ACCESS_TOKEN: {}".format(ACCESS_TOKEN))
else:print("2. 使用已有 ACCESS_TOKEN")print("3. 向模型接口 'MODEL_API_URL' 发送请求")
request_url = "{}?access_token={}".format(MODEL_API_URL, ACCESS_TOKEN)
response = requests.post(url=request_url, json=PARAMS)
response_json = response.json()
response_str = json.dumps(response_json, indent=4, ensure_ascii=False)
print("结果:{}".format(response_str))
print(base64_str)

Uniapp 调用模型公有云API Vue2实现

image-tools 图像转换工具

注意!!!
image-tools是uniapp中一个图像转换工具插件:image-tools
API中传入的目标图片是需要base64编码的,因此无论是拍照还是从相册传入图片后都需要对图像转换base64编码。
但是!!公有云API中需要的base64编码是没有头部的,因此需要用正则表达式将image-tools转换的base64编码头部去掉!
以选择本地相册图片进行识别为例:

//选择本地的图片识别chooseImage() {uni.chooseImage({count: 1,sourceType: ['album'],success: res => {this.imageUrl = res.tempFilePaths[0];this.result = ''pathToBase64(res.tempFilePaths[0]).then(base64 => {// 去掉base64编码头部正则this.base64 = base64.replace(/^data:image\/\w+;base64,/, "")}).catch(error => {console.error(error)}) },});}
图像识别实现方法
identify() {uni.showToast({ title: '识别中..', icon: 'loading' });const MODEL_API_URL = "你的接口地址";const ACCESS_TOKEN = "你的access_token"uni.request({url: `${MODEL_API_URL}?access_token=${ACCESS_TOKEN}`,method: 'POST',data: {image: this.base64,},header: {"Content-Type":'application/json'},success: res => {console.log('识别结果:', res.data);this.result = res.data.results;this.imageUrl = 'data:image/jpeg;base64,'+res.data.data.base64},fail: error => {console.error('识别请求失败', error);}})}
页面结构示例
<template><view><view class="container"><view class="button-container"><button class="button" @click="takePhoto">实时拍照</button><button class="button" @click="chooseImage">从相册选择</button></view><view class="image-container"><canvas class="canvas" canvas-id="myCanvas" v-show="showCanvas"></canvas><image v-if="!showCanvas && imageUrl" :src="imageUrl" mode="aspectFill"></image></view><button class="identify-button" @click="identify">识别</button><view class="result" v-for="res in result"><text>识别结果: {{ res.name }}, 置信度:{{ parseFloat(res.score*100).toFixed(2) }}% </text></view></view></view></view></view> 
</template>

相关文章:

Uniapp+基于百度智能云完成AI视觉功能(附前端思路)

本博客使用uniapp百度智能云图像大模型中的AI视觉API&#xff08;本文以物体检测为例&#xff09;完成了一个简单的图像识别页面&#xff0c;调用百度智能云API可以实现快速训练模型并且部署的效果。 uniapp百度智能云AI视觉页面实现 先上效果图实现过程百度智能云Easy DL训练图…...

Android 软件盘的弹出和消失的监听

监听接口 OnKeyboardListener.java public interface OnKeyboardListener {void onKeyboardHidden();void onKeyboardShow(int keyboardHeight);} KeyBoardUtil.java public class KeyBoardUtil {private final static String TAG "KeyBoardUtil";public PopupWi…...

通俗易懂HTTP和HTTPS区别

HTTP&#xff1a;超文本传输协议&#xff0c;它是使用一种明文的方式发送我们的内容&#xff0c;没有任何的加密&#xff0c;例如我们要在网页上输入账号密码&#xff0c;如果使用HTTP协议&#xff0c;账号密码就可能会被暴露&#xff0c;默认端口是80. HTTPS&#xff1a;是HT…...

【ZZULIOJ】1061: 顺序输出各位数字(Java)

目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy 提示 code 题目描述 输入一个不大于10的9次方的正整数&#xff0c;从高位开始逐位分割并输出各位数字。 输入 输入一个正整数n,n是int型数据 输出 依次输出各位上的数字&#xff0c;每一个数字后面有一个空格…...

java数据结构与算法刷题-----LeetCode260. 只出现一次的数字 III

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 与运算取末尾1分组 与运算取末尾1分组 解题思路&#xff1a;时间…...

AWS被误扣费了,怎么解决?

有时在使用aws时&#xff0c;可能会无意中被AWS扣费&#xff0c;对于如何处理这个问题&#xff0c;作为aws的合作伙伴&#xff0c;接下来由九河云进行讲解&#xff1a; &#xff08;1&#xff09;审查账单&#xff1a;首先&#xff0c;您需要仔细审查AWS账单&#xff0c;了解具…...

再传IPO消息,SHEIN的上市为何充满变数?

据《金融时报》援引消息人士报道&#xff0c;SHEIN正在等待北京监管部门的批准&#xff0c;以推进在纽约或伦敦的重磅上市。 几乎每隔一段时间&#xff0c;SHEIN即将上市的消息就会成为媒体关注的焦点&#xff0c;但每一次报道都“没有下文”&#xff0c;再加上SHEIN官方的“拒…...

maven bom

BOM(Bill of Materials)是由Maven提供的功能,它通过定义一整套相互兼容的jar包版本集合,使用时只需要依赖该BOM文件,即可放心的使用需要的依赖jar包,且无需再指定版本号。BOM的维护方负责版本升级,并保证BOM中定义的jar包版本之间的兼容性。 为什么要使用BOM 使用BOM除…...

若依vue中关于字典的使用

文章目录 字典管理页面列表点击某个字典类型展示具体字典数据修改某一条字典数据 字典的应用一般用于select多选框中代码实现根据字典Dict的value获取Label&#xff0c;类似于通过key获得value 源码解析 字典管理页面 列表 点击某个字典类型展示具体字典数据 修改某一条字典数…...

链表题(哑结点的使用)

给定一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 首先面对删除链表节点的操作&#xff0c;我们通常是将该节点的上一个节点的next指向该节点的下一个节点&#xff0c;从而将这个节点置空&#xff0c;达到删除节点的操作。 但是我们会碰…...

C#:求三个整数的最大值

任务描述 本关任务&#xff1a;编写一个程序&#xff0c;实现从键盘输入的三个整数&#xff0c;输出三个整数的最大值。 编程要求 根据提示&#xff0c;在右侧编辑器补充代码&#xff0c;计算并输出从键盘输入的三个数的最大值。 测试说明 平台会对你编写的代码进行测试&…...

广州南沙番禺联想SR530服务器主板传感器故障维修

今日分享一例广州市南沙区联想ThinkSystem SR530服务器sensor sysbrd vol故障问题维修案例&#xff1b; 服务器型号是&#xff1a;Lenovo thinksystem sr530 g6服务器 服务器所在位置&#xff1a;广东省广州市南沙区 服务器故障问题&#xff1a;机房异常停电&#xff0c;来电后…...

深入探索自然语言处理:用Python和BERT构建文本分类模型

在当今的信息时代&#xff0c;自然语言处理&#xff08;NLP&#xff09;技术正在改变我们理解和处理自然语言的方式。NLP使计算机能够解读、理解和生成人类语言&#xff0c;从而在多种应用中实现自动化&#xff0c;如聊天机器人、情感分析和文本分类。本文将详细介绍如何使用Py…...

在Visual Studio Code中编辑React项目时,以下是一些推荐的扩展

ESLint&#xff1a;这个扩展可以集成ESLint到VS Code中&#xff0c;帮助你在编写代码时发现和修复JavaScript和TypeScript的语法错误和代码风格问题。 Prettier - Code formatter&#xff1a;Prettier是一个代码格式化工具&#xff0c;可以自动格式化你的代码以保持一致的代码…...

智算时代的基础设施如何实现可继承可演进?浪潮云海发布 InCloud OS V8 新一代架构平台

从 2023 年开始持续火爆的 AIGC 正在加速落地应用&#xff0c;为全行业带来生产生活效率的变革与升级。面对数字化转型与智能化转型&#xff0c;对于技术团队来说&#xff0c;既要根据业务与 AI 应用去部署以云为基础的 AI 算力&#xff0c;又要与已有数据和系统&#xff08;甚…...

LDF、DBC、BIN、HEX、S19、BLF、ARXML、slx等

文章目录 如题 如题 LDF是LIN报文格式文件&#xff0c;把这个直接拖到软件里面&#xff0c;可以发报文和接收报文 DBC是CAN报文格式文件&#xff0c;把这个直接拖到软件里面&#xff0c;可以发报文和接收报文 BIN文件烧录在BOOT里面&#xff08;stm32&#xff09;&#xff0c…...

因为使用ArrayList.removeAll(List list)导致的机器重启

背景 先说一下背景&#xff0c;博主所在的业务组有一个核心系统&#xff0c;需要同步两个不同数据源给过来的数据到redis中&#xff0c;但是每次同步之前需要过滤掉一部分数据&#xff0c;只存储剩下的数据。每次同步的数据与需要过滤掉的数据量级大概在0-100w的数据不等。 由…...

Let‘s Encrypt

创建文件夹 mkdir /usr/local/develop/ 安装Certbot客户端 yum install certbot 首先确保example.com和www.example.com这两个域名通过DNS解析绑定了你的web 服务器的公网 IP 就是说先要完成域名解析到服务器 下面命令会验证 /var/www/example 他会将一些命令文件存在…...

C语言 | Leetcode C语言题解之第24题两两交换链表中的节点

题目&#xff1a; 题解&#xff1a; struct ListNode* swapPairs(struct ListNode* head) {struct ListNode dummyHead;dummyHead.next head;struct ListNode* temp &dummyHead;while (temp->next ! NULL && temp->next->next ! NULL) {struct ListNod…...

【LeetCode热题100】【回溯】电话号码的字母组合

题目链接&#xff1a;17. 电话号码的字母组合 - 力扣&#xff08;LeetCode&#xff09; 组合的过程是一个长树的过程&#xff0c;可以用深度遍历实现&#xff0c;每一个数字对应的字符串都是一层&#xff0c;一种字母组合就是一条路径&#xff0c;当递归的深度达到层数就找到了…...

焕新Windows资源管理器:打造惊艳毛玻璃视觉体验

焕新Windows资源管理器&#xff1a;打造惊艳毛玻璃视觉体验 【免费下载链接】ExplorerBlurMica Add background Blur effect or Acrylic (Mica for win11) effect to explorer for win10 and win11 项目地址: https://gitcode.com/gh_mirrors/ex/ExplorerBlurMica 每天面…...

MGeo门址地址解析效果展示:高德×达摩院多模态模型真实解析案例集

MGeo门址地址解析效果展示&#xff1a;高德达摩院多模态模型真实解析案例集 1. 引言&#xff1a;当AI开始“读懂”地址 想象一下&#xff0c;你收到一条外卖订单&#xff0c;地址写着“朝阳区望京SOHO T3 B座15楼1501室&#xff0c;到了打电话”。对于骑手来说&#xff0c;这…...

好看不等于会交互!阿里发布基于交互的世界模型基准

视频生成技术正在以惊人的速度迭代&#xff0c;那些光影绚丽的画面常常让人惊叹人工智能的创造力&#xff0c;但当你仔细观察视频中的物理碰撞或物体运动时&#xff0c;会发现它们常常并不符合现实世界的常识。由阿里、中科院、北航和北邮的研究人员联合推出的 Omni-WorldBench…...

三步掌握EdgeRemover:Windows系统Edge浏览器专业卸载方案

三步掌握EdgeRemover&#xff1a;Windows系统Edge浏览器专业卸载方案 【免费下载链接】EdgeRemover PowerShell script to remove Microsoft Edge in a non-forceful manner. 项目地址: https://gitcode.com/gh_mirrors/ed/EdgeRemover 还在为Windows系统中Microsoft Ed…...

别再手动写RTL了!用Vivado FIR Compiler IP核5分钟搞定一个低通滤波器

5分钟极速部署&#xff1a;用Vivado FIR Compiler IP核实现专业级低通滤波器 在FPGA信号处理领域&#xff0c;滤波器设计往往需要耗费工程师大量时间在RTL编码和验证上。但今天&#xff0c;我们将颠覆这一传统工作流程——通过Vivado的FIR Compiler IP核&#xff0c;即使没有深…...

微信公众号自动回复避坑指南:如何高效处理用户关键词匹配(PHP版)

微信公众号自动回复进阶实战&#xff1a;PHP高效关键词匹配与消息处理 在运营微信公众号时&#xff0c;自动回复功能是与用户互动的第一道门槛。一个响应迅速、匹配精准的自动回复系统不仅能提升用户体验&#xff0c;还能有效减轻人工客服压力。本文将深入探讨如何用PHP构建一个…...

MangoHud资源占用实时监控:图表工具终极指南

MangoHud资源占用实时监控&#xff1a;图表工具终极指南 【免费下载链接】MangoHud A Vulkan and OpenGL overlay for monitoring FPS, temperatures, CPU/GPU load and more. Discord: https://discordapp.com/invite/Gj5YmBb 项目地址: https://gitcode.com/gh_mirrors/ma/…...

机械扑翼飞鸟机构3D图纸 Solidworks设计

机械扑翼飞鸟机构的设计聚焦于模拟鸟类飞行姿态&#xff0c;通过机械结构的协同运动实现扑翼动作。其核心作用在于将复杂的生物运动转化为可工程化的机械系统&#xff0c;为仿生飞行器研究提供基础支撑。该机构通常由传动系统、扑翼组件及支撑框架构成&#xff0c;传动系统通过…...

Dify向量检索精度跃升47%的秘密(重排序Pipeline低延迟部署避坑手册)

第一章&#xff1a;Dify重排序算法精度跃升47%的核心动因解析Dify v0.12.0 引入的重排序&#xff08;Reranking&#xff09;模块并非简单叠加模型&#xff0c;而是通过三重协同优化机制实现精度质变。核心突破在于将传统单阶段打分范式升级为「语义对齐—上下文感知—动态归一化…...

高效PDF处理:用PDF Arranger实现极简文档管理

高效PDF处理&#xff1a;用PDF Arranger实现极简文档管理 【免费下载链接】pdfarranger Small python-gtk application, which helps the user to merge or split PDF documents and rotate, crop and rearrange their pages using an interactive and intuitive graphical int…...