微信小程序+前端+天行数据垃圾图像识别接口API

news2024/11/18 7:25:52

文章目录

前言

步骤

1. 去到天行数据官网注册账号,去到接口的介绍网站

2. 去测试网站,先看看请求的格式

 3. 小程序端我采用的是把网站上的url链接的网络图片转成base64编码后的形式作为传入参数,这里需要有点基础,因为只给上了js核心代码

4. 效果


前言

当时有个垃圾图像识别的需求,之前已经用百度的图像识别API(识别出垃圾的名字)+自己的后端数据库信息来识别出垃圾的信息,但是想着有没有一个API接口就能解决的办法。当时一开始是想用阿里云的垃圾分类识别接口的,但是发现传入参数ImageURL有点挑剔,图像URL地址如果是使用上海地域的OSS链接就很方便,直接用测试那边的代码就行,但是当时我是没有阿里的OSS的。后面我试了下上海地域的OSS和对于文件在本地或者非上海地域OSS链接的处理方法,然后发现应该是可以完成的,但是代码量有点大,就算放到云函数上可有点麻烦(维护的话)。所以后面还是决定使用天行数据的API,因为代码比较简短和方便,代码放在前端就能使用。

以下就进入本篇文章正文内容,下面我的例子可供参考

步骤

1. 去到天行数据官网注册账号,去到接口的介绍网站

图像垃圾分类API接口 - 天行数据TianAPI

2. 去测试网站,先看看请求的格式

用户登录 - 天行数据TianAPI

 3. 小程序端我采用的是把网站上的url链接的网络图片转成base64编码后的形式作为传入参数,这里需要有点基础,因为只给上了js核心代码

var httpsimg = that.data.src_jpg   // 网络图片地址
      wx.downloadFile({     // 需要先下载 
        url: httpsimg,
        success(res) {
          console.log(res,'res') // debug
          wx.getFileSystemManager().readFile({
              filePath: res.tempFilePath, //选择图片返回的相对路径
              encoding: 'base64', //编码格式:base64 | hex(16进制)
              success: res => { //成功的回调
                var userImageBase64 = 'data:image/jpg;base64,' + res.data;
                console.log('userImageBase64'); // debug 打印base64格式图片
                
                wx.request({
                  url: 'https://apis.tianapi.com/imglajifenlei/index', //垃圾分类接口
                  method: 'POST',
                  header: {
                    'content-type': 'application/x-www-form-urlencoded'
                  },
                  data: {
                    key: '填入自己的key',
                    img: userImageBase64
                  },
                  success: function (res) {
                    if (res.data.code == 200) { //成功返回正确结果,lajitip为4表示未知类型
                      console.log(res)
                      var logoImg=""
                      var sort = res.data.result.list != 0 ? res.data.result.list[0].lajitype : 4 // 判断是不是没有数据,第一个数据是置信度最高的识别结果
                      switch (sort) {
                        case 0:
                          logoImg = "/images/RecycleableWaste.jpg"
                          break;
                        case 1:
                          logoImg = "/images/HazardouAwaste.jpg"
                          break;
                        case 2:
                          logoImg = "/images/HouseholdfoodWaste.jpg"
                          break;
                        case 3:
                          logoImg = "/images/ResidualWaste.png"
                          break;
                        case 4:
                          logoImg = "/images/unknown.jpg"
                          break;
                      }
                      console.log(logoImg)
                      that.setData({
                        logo:logoImg,
                        name:res.data.result.list[0].name,
                        isHasData:!that.data.isHasData //简单取反,表示有数据,一开始可以给false
                      })
                      

                    } else {
                      console.log("天行数据垃圾识别接口调用失败,错误码:" + res.data.code)
                    }
                  } 
                })

              }
            })
          }
        })

下面这个网站可以看看base64编码后的结果。 

图片/base64编码互转工具 - 天行数据TianAPI

4. 效果

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

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

相关文章

JVM基础 - 类加载的过程

类加载的过程加载验证准备解析初始化使用卸载其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的。而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始&…

RFID技术在生产企业的集成应用分析

RFID技术在生产企业的集成应用分析1.RFID的主要功能RFID自动识别功能RFID标签的主要核心部件是一个电子芯片,芯片中存储着能够识别目标的信息。RFID标签具有持久性、信息接收传播穿透性强、存储信息容量大、种类多等特点。有些RFID标签支持读写功能,目标…

CHAPTER 15 Mesos(一)

Mesos-优秀的集群资源调度平台15.1 Mesos简介15.2 Mesos安装与使用1. 安装1. 源码编译2. 软件源安装3. Docker方式安装2. 配置说明1. ZooKeepr2. Mesos3. Marathon3.访问Mesos图形界面4.访问Marathon图形界面1. 通过界面方式2. REST API方式15.3 原理与架构1. 架构2. 基本单元3…

CentOS7中安装Hadoop3详细步骤

目录 (一)新建一个虚拟机 (二)配置网络 (三)安装vim工具 (四)设置ssh免密登录 (五)设置时间同步 (六)修改主机名 1.方法一 2.方法二 (七)给主机文件添加IP名称映射 (八)安装JDK8 (九)安装Hadoop 1.打开Xftp,连接虚拟机,在/opt目录下新建两个…

[引擎开发] 现代图形API - metal篇

Metal是苹果开发的图形计算接口,它是在移动端出现的比较早的现代图形API。本文将更侧重于移动端(IOS),对metal的API做一个大致的引入介绍。 Apple GPU概述 在我们对Metal进行介绍前,先来了解一下Apple GPU。 Apple GP…

Linux常用命令——printf命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) printf 格式化并输出结果 补充说明 printf命令格式化并输出结果到标准输出。 语法 printf(选项)(参数) --help:在线帮助; --version:显示版本信息。参数 输出格式&#x…

第1讲 谈谈你对Java平台的理解?

第1讲 | 谈谈你对Java平台的理解? 从你接触 Java 开发到现在,你对 Java 最直观的印象是什么呢?是它宣传的 “Write once, run anywhere”,还是目前看已经有些过于形式主义的语法呢?你对于 Java 平台到底了解到什么程度…

《你不会还没入门jvm调优吧》之前置知识

该文章为科普文,所以很多细节涉及不到,旨在指引入门,同事在聊的时候不至于插不上话,顺带回顾部分JVM相关知识。准备好了吗,开始发车。如有不正确的地方,欢迎批评指正。 目录 JVM调优调的到底是什么 回顾…

Linux(CentOS 7)--gdb的基本调试指令

一下面的代码为例介绍一下linux中&#xff0c;gdb调试的基本指令 创建一个文件myfile.c&#xff0c;文件代码内容如下 1 #include <stdio.h>2 3 int Add(int x, int y)4 {5 6 return xy; …

高性能消息队列中间件MQ_part2

接上一篇part1的内容 RabbitMQ通配符模式_编写消费者 接下来我们编写通配符模式的消费者&#xff1a; // 站内信消费者 public class Customer_Station {public static void main(String[] args) throws IOException, TimeoutException {// 1.创建连接工厂ConnectionFactory…

springboot引入flink,maven打包插件需替换

目录说明说明 springboot引入flink后&#xff0c;如果要打包&#xff0c;传统的maven不行&#xff0c;要更换指定插件 <build><finalName>flink</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><art…

CMake 混编c和c++代码

准备工作 wsl 或者 有linux 系统(购买阿里云或者其他云服务器&#xff09;cmake, gcc, git 等一些必要的软件安装 环境 windows 下 的 wsl wsl 安装下载 例子 拿 Unix网络编程 举例, 作者对原生接口进行了封装, 我们需要编译使用在自己的工程 1. 创建空文件 cd E:\githu…

网络流量监控对OA系统性能分析案例

需求简介 某外高桥公司的OA系统是其重要的业务系统&#xff0c;OA系统负责人表示&#xff0c;部分用户反馈&#xff0c;访问OA系统时比较慢。需要通过分析系统看一下实际情况。 报告内容 本报告内容主要为&#xff1a;OA性能整体分析 分析时间 报告分析时间范围为&#xf…

同一条好友邀请信息给大量的人发,会导致领英账号被封吗?

做外贸的领英新人经常有一个问题&#xff1a;领英上添加好友时&#xff0c;同一条好友邀请信息给大量的人发&#xff0c;会导致领英账号被封吗&#xff1f; 这是一个被一部分人所忽略&#xff0c;也在被一部分人所担心的问题&#xff0c;因为很多领英新手都是在复制粘贴发送相…

游戏开发者的视觉盲区

本文首发于微信公众号&#xff1a; 小蚂蚁教你做游戏。欢迎关注领取更多学习做游戏的原创教程资料&#xff0c;每天学点儿游戏开发知识。嗨&#xff01;大家好&#xff0c;我是小蚂蚁。前天我刚发布了一个新的游戏作品——经典宝石方块。仍然是掌机模式&#xff0c;仍然是简约风…

JAVA开发(Web应用境外访问慢问题)

背景&#xff1a; 最近公司做的小程序出现在香港地区访问慢的问题。因为我们的应用是部署在大陆的腾讯服务器&#xff08;北京&#xff09;上&#xff0c;所以在香港地区访问大陆应用会比较慢。初步体验是4-5秒的响应速度。 影响的原因&#xff1a; 1、网络的原因&#xff0…

【HBase高级】7. HBase调优、常见问题处理

HBase调优 6.1 通用优化 NameNode的元数据备份使用SSD 定时备份NameNode上的元数据 每小时或者每天备份&#xff0c;如果数据极其重要&#xff0c;可以5~10分钟备份一次。备份可以通过定时任务复制元数据目录即可。 为NameNode指定多个元数据目录 使用dfs.name.dir或者dfs…

4.5--贪心--单源最短路径问题

设置顶点集合S并不断地作贪心选择--&#xff08;不属于这个集合S中距离"源"最短的顶点&#xff09;来扩充这个集合--更新最短距离 这张图需要放在最前面&#xff0c;就是经典dijkstra的主要思想。 为什么这样贪心是对的&#xff1f; 1、问题描述 给定带权有向图G (…

C++ 入门

C是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库&#xff0c;以及编程范式等 文章目录一、命名空间二、输入输出三、缺省参数四、函数重载五、引用1. 引用的用法2. 常引用3. 引用的使用场景4. 引用的底层实现六、内联函数七、auto 关…

数组

循环队列中元素个数计算方法是固定的&#xff0c;即(尾-头)%长度&#xff0c;但是由于是循环队列所以尾可能会小于头&#xff0c;所以要加上长度&#xff0c;使尾-头保持是正整数&#xff0c;然后再对长度求余&#xff0c;即元素个数。循环队列中&#xff1a;头指针指向队列头元…