【微信小程序】调用百度API进行图像识别(以植物识别为例)

这篇具有很好参考价值的文章主要介绍了【微信小程序】调用百度API进行图像识别(以植物识别为例)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

微信小程序调用百度API进行图像识别(以植物识别为例)

需要素材与源码可联系笔者,项目文件过多不适宜全部展示。

微信小程序调用百度API可分为以下三步:

  1. 注册百度智能云账号,并开通植物识别API
  2. 在小程序中调用
  3. 渲染在小程序页面上

1.注册智能云账号

移步百度只能云平台https://cloud.baidu.com/
注册好账号之后,把鼠标放在产品上,侧边会展开具体的产品,这里我们选择图像技术,会展开三级标题,选择其中的植物识别,点击

百度图片识别api,微信小程序,微信小程序,小程序
进入后点击开屏大字立即使用

跳转到下图界面,去创建应用
百度图片识别api,微信小程序,微信小程序,小程序

之后页面跳转到填写信息的界面,首先给你的应用取个名字,然后这里我们选择植物识别,当然如果你还想实现其他技术也是可以的,具体操作过程也是大同小异。后面还会填一段应用描述,这里随便写两句就好啦。最后点击立即创建

百度图片识别api,微信小程序,微信小程序,小程序

创建好之后打开我们的应用,可以看到API key和Secret key,通过这两个值我们可以获取到access_token,获取方法见 百度鉴权认证机制百度图片识别api,微信小程序,微信小程序,小程序
或者也可以直接点击API在线调试,按照以下步骤也可以获取到access_token
百度图片识别api,微信小程序,微信小程序,小程序

2.小程序调用

小程序创建项目:略

这边建议开通云函数,不然还要解决一系列跨域问题。
百度图片识别api,微信小程序,微信小程序,小程序
点击云开发,找到开发环境,把env参数写到app.js中。
开通好之后云函数的文件夹会带小云的标志,如下图
百度图片识别api,微信小程序,微信小程序,小程序

以下是云函数中index.js文件

// 云函数入口文件
console.log("成功调用云函数!!!!------------------")
const cloud = require('wx-server-sdk')
var AipImageClassifyClient = require("baidu-aip-sdk").imageClassify;

cloud.init()
// 设置APPID/AK/SK,这里需要改成你自己的APPID/AK/SK
var APP_ID = "wxc63****";
var API_KEY = "Rx3b3Bxu*****";
var SECRET_KEY = "cx4OwRf0jbhR*****";

// 新建一个对象,建议只保存一个对象调用服务接口
var client = new AipImageClassifyClient(APP_ID, API_KEY, SECRET_KEY);

// 如果有可选参数
var options = {};
options["baike_num"] = "5";

// 云函数入口函数
exports.main = async (event, context) => {
  let flower = await AIflower();
  // console.log(flower);
  return{
    flower
  }

  // event.img图片必须是base64编码的
  function AIflower(){
    return new Promise((resolve,reject) => {
      // 带参数调用植物识别
      client.plantDetect(event.img, options)
      .then((res) => {
        resolve(res);
      //  resolve(JSON.stringify(res));
      })
      .catch((err) => {
        // 如果发生网络错误
        reject(err);
      });
    })
  }
}

下面是上传图片的相关代码,需要先把图片转成base64编码,植物识别需要一个参数,就是图片的base64编码,返回值是name(植物名称)和score(相似度)

// 函数定义
  selectImage(){
    wx.chooseImage({
      count:1,
      // 指定只能上传压缩图
      sizeType: ['compressed'],
      sourceType: ['album','camera'],
      success: (res) => {
        // console.log(res);
        const path = res.tempFilePaths[0];
        // 解码图片base64
        var imgbase = wx.getFileSystemManager().readFileSync(path,"base64");
        this.flowerCloud(imgbase);
        this.setData({
          imagePath:path,
        })
      },
      fail: (err) => {
        console.log(err);
      }
    })
  },

  baikeShow(event){
    const baikedata = event.currentTarget.dataset.itemdes;
    this.setData({
      isShow:true,
      baikedata: baikedata
    })
  }

下面为调用云函数,这里的name指的是云函数根目录下的文件夹名称!!!

// 定义调用云函数的函数flowerCloud
  flowerCloud(imgbase){
    wx.cloud.callFunction({
      name:'flowers',
      data:{
        img:imgbase
      }
    })
    .then((res) => {
      let answer1 = res.result.flower.result;
      // map遍历
      let answer = answer1.map((item) => {
      const name = item.name;
      const score = (item.score*100).toFixed(2) + '%'; 
      return {
          name,
          score
      }
     })
   })
   .catch((err) => {
      console.log(err);
    })
  },

我们可以成功得到一组返回值,可以打印一下调用接口得到的res:
百度图片识别api,微信小程序,微信小程序,小程序
然后我们只需要把这些数据渲染到前端界面就可以了。

3.渲染

用一个answer储存从接口返回的数据,从上面的结果可以看到有namescore,我们可以直接把用for循环渲染到界面上

 <view class="show">
    <view class="title">
      <view>名称</view>
      <view>可信度</view>
    </view>
    <block wx:for="{{answer}}" wx:key="index">
      <view class="title data">
        <view>{{item.name}}</view>
        <view>{{item.score}}</view>    
      </view>
    </block>
  </view>

4.结果展示

百度图片识别api,微信小程序,微信小程序,小程序
可显示植物名称和对应的相似度。

5.可能遇到的坑

  1. 云函数上传之后,记得右键点击云函数根目录,同步云函数列表
  2. 如果需要从数据库调用数据,比如说先识别出植物的名称,然后需要从数据库调用该植物所对应的英文名并渲染,会遇到异步问题,后端数据发生了改变,但是页面渲染的数据没有改变(或者获取不到)
  3. 一定要多次调试,记得随手console.log返回的数据,可能会发现很多理论上没有问题,但运行起来确实有问题的情况(乐
  4. (补充上一条)这些问题大多都是因为

小程序是基于双线程模型,那就意味着任何数据传递都是线程间的通信,也就是都会有一定的延时。这不像传统Web那样,当界面需要更新时,通过调用更新接口 UI 就会同步地渲染出来。在小程序架构里,这一切都会变成异步。

——摘自小程序开发文档


完结撒花~

PS:以上均为片段代码,数据定义和样式等内容需要自己码,需要完整代码可联系笔者文章来源地址https://www.toymoban.com/news/detail-752736.html

到了这里,关于【微信小程序】调用百度API进行图像识别(以植物识别为例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序 通过百度API接口实现汉译英翻译

    目录 先看一下做出来的效果: 一、微信开发平台的网址(微信开发者工具的官方使用说明) 二、百度API(文本翻译的API) 三、进入正文,微信小程序的代码部分 基础 | 微信开放文档 (qq.com) https://developers.weixin.qq.com/miniprogram/dev/api/   文本翻译_机器翻译-百度AI开放平台 (bai

    2024年02月09日
    浏览(47)
  • 微信小程序 | 小程序系统API调用

    🖥️ 微信小程序专栏:小程序系统API调用 🧑‍💼 个人简介:一个不甘平庸的平凡人🍬 ✨ 个人主页:CoderHing的个人主页 🍀 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️ 👉 你的一键三连是我更新的最大动力❤️ 目录 一、网络请求API和封装 网络请求 – API参数 网络请

    2024年02月03日
    浏览(22)
  • 微信小程序 - 调用后台api接口方法

    2024年01月16日
    浏览(34)
  • 微信小程序(四十)API的封装与调用

    注释很详细,直接上代码 上一篇 新增内容: 1.在单独的js文件中写js接口 2.以注册为全局wx的方式调用接口 源码: utils/testAPI.js app.js index.js 效果演示:

    2024年02月20日
    浏览(27)
  • uniapp调用微信小程序人脸识别步骤

    template script

    2024年02月16日
    浏览(25)
  • 微信小程序路由跳转,API调用,页面传值

    wx.switchTab 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。 wx.reLaunch 关闭所有页面,打开到应用内的某个页面。 wx.redirectTo 关闭当前页面,跳转到应用内的某个页面。但是不能跳转到 tabbar 页面。 wx.navigateTo 保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面

    2024年02月12日
    浏览(31)
  • 【7 微信小程序学习 - 小程序的系统API调用,网络请求封装】

    请求数据,保存数据 需要封装为单独的函数,不然不是异步的 (推荐,可配置不同基础URL的多个实例)

    2024年02月09日
    浏览(30)
  • 原生微信小程序中进行 API 请求

    当在原生微信小程序中进行 API 请求时,封装请求可以提高代码的可维护性和可扩展性。在本篇博客中,我们将一步步介绍如何进一步封装请求,并添加请求超时、拦截器和请求取消功能。 第一步:基本请求封装 首先,我们创建一个用于发送 HTTP 请求的基本封装。在微信小程

    2024年02月07日
    浏览(30)
  • 调用百度文心AI作画API实现中文-图像跨模态生成

    乔冠华,女,西安工程大学电子信息学院,2020级硕士研究生,张宏伟人工智能课题组。 研究方向:机器视觉与人工智能。 电子邮件:1078914066@qq.com 文心ERNIE-ViLG,一款适合中文的跨模态AI绘画大模型。 论文地址:https://arxiv.org/pdf/2112.15283.pdf 体验连接:https://wenxin.baidu.com/ern

    2024年02月03日
    浏览(38)
  • 微信小程序调用拨打电话API,实现选择拨打固话或手机号。

    HTML 部分: JavaScipt 部分: (vue中 ,👇这段将写在 methods 里边) 效果 ···  有 固话 且 和 手机号 不相同图片演示:  效果 ···  两个 号码 相同 图片演示:   可根据需求自加判断条件,也可以选择此段代码直接服用。(收藏 关注哟 ♥)

    2024年02月13日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包