当前位置:网站首页>小程序调用百度api实现图像识别
小程序调用百度api实现图像识别
2022-08-09 08:22:00 【php的绯闻女友】
一、获取app_key和secret_key
1.1首先需要去百度智能云搜索图像识别
1.2创建应用--领取免费资源(我已经创建了应用,这个是可以免费使用一年的,测试够了)
1.3获取app_key和secret_key
点进上一张图的管理应用即可查看相应信息
二、获取token
2.1首先判断storage中是否已经有token
onLoad() {
// 自定义头部导航栏文字
wx.setNavigationBarTitle({
title: '垃圾搜索'
});
//获取storge中的token
var that=this;
wx.getStorage({
key:'expires_in',
success(res){
// 获取成功,证明本地已存有相关token
const newT =new Date().getTime();
// // 用当前时间和存储的时间判断,token是否已过期
if (newT > parseInt(res.data)) {
// token过期,重新获取token
that.getToken();
} else {
// 获取本地缓存的token
let token=wx.getStorageSync('access_token');
that.setData({token:token});
}
},fail(){
that.getToken();
}
});
},
2.2 getToken函数
// 获取token
getToken:function(){
var that=this;
// client_id:app_key需要自己去百度智能云创建相应的应用后获取
//client_secret:Secret Key
const url = 'https://aip.baidubce.com/oauth/2.0/token'+
'?grant_type=client_credentials'+
'&client_id=app_key&client_secret=client_secret';
wx.request({
url:url,
method: 'POST',
success: res => {
console.log(res)
let thaRres=res.data;
// 将access_token存储到storage中
wx.setStorage({
key:'access_token',
data:thaRres.access_token
});
var date=new Date().getTime();
let time=date+2592000*1000;
console.log('三十天后的时间',time);
console.log('当前时间戳',date)
wx.setStorage({
key:'expires_in',
data:time
});
that.setData({token:thaRres.access_token});
/*
access_token: 要获取的Access Token;
expires_in: Access Token的有效期(秒为单位,一般为1个月);
*/
},
fail: () => {}
});
},
三、进行图像识别
// 点击相机图标时
cameraTap:function(){
console.log('点击相机');
var that=this;
wx.chooseImage({
success: res => {
wx.getFileSystemManager().readFile({
filePath: res.tempFilePaths[0], //选择图片返回的相对路径
encoding: 'base64', //编码格式
success: res => { //成功的回调
// 图片
wx.showLoading({
title: '识别中...',
})
var image = res.data;
// 文字识别
wx.request({
url: 'https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general?access_token='+that.data.token,
data: {
image: image
},
header: {
'Content-Type': 'application/x-www-form-urlencoded'
},
method: 'POST',
success(res) {
console.log(res.data)
wx.hideLoading({
success: (res) => {},
})
//此处接处理识别结果的函数,可见下一篇文章:https://blog.csdn.net/Moxi099/article/details/120617526?spm=1001.2014.3001.5501
},
fail:()=>{
wx.hideLoading();
wx.showToast({
title: '图片识别失败,请重试!',
icon: 'none'
});
}
})
}
})
}
})
},
至此大功告成,返回的数据如下:
result就是最终需要的数据了!
边栏推荐
猜你喜欢
随机推荐
App测试
VMware virtual machine cannot be connected to the Internet after forced shutdown
Programming a washing machine: garbled characters after string output
bs4的使用基础学习
SQL存储过程
web basic concepts
Three handshakes, four waves
ASEMI整流桥GBJ810参数,GBJ810封装,GBJ810重量
实现弹簧柔性状态的2种方式 | Solidworks教程
Database MySQL installation and uninstallation
【redis】使用redis实现简单的分布式锁,秒杀并发场景可用
收藏!Solidworks从设计到制造流程解决方案 2022来了!
Use of prepareStatement
SOLIDWORKS 2022新功能直播揭秘!速来围观!
Non-decreasing Array
HOOPS是什么?这4款3D软件开发工具包你还不知道?
leetcode 36. 有效的数独(模拟题)
【MySQL】mysql:解决[Err] 1093 - You can‘t specify target table ‘表名‘ for update in FROM clause问题
Set集合
Literature retrieval operation code