栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > 学术 > 人文期刊 > 电脑报

AppInvenor开发——AI图像识别

电脑报 更新时间: 发布时间: 学术归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

AppInvenor开发——AI图像识别

王德贵

一、思路

在本报第15期《AppInvenor开发——拍照识花》中我们已经实现了手机的植物识别App,那么很自然我们就希望这个App能够进行动物识别和其他的图像智能识别,这类AI应用百度已经开发出很多种类,你可以去百度智能云查看支持文档,这里我们在拍照识花的基础上再添加3种:动物识别、菜品识别、果蔬识别,通过本文你有其他需求就可以自行添加其他功能了(图1)。

二、准备工作

1制作智能植物识别时,我们已经申请了Apikey和Secretkey,可以直接使用,如果还没有申请Apikey和Secretkey,则需要去百度智能云申请,再来继续制作App。

2 GET请求获取Access_token令牌

(1)请求头格式(Header)如下:

(2)请求网址格式为(中括号中的变量用你的Apikey和Scretkey替换):

https:∥aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【你的Apikey】&client_secret=【你的Scretkey】

3.POST请求获取AI数据(中括号中的变量用access_token令牌口令替换):

(1)植物识别

https:∥aip.baidubce.com/rest/2.0/image-classify/v1/plant?access_token=【access_token令牌口令】

(2)动物识别

https:∥aip.baidubce.com/rest/2.0/irnage-classify/v1/anirnal?access_token=【access_token令牌口令】

(3)果蔬识别

https:∥aip.baidubce.com/rest/2.0/irnageclassify/v1/classify/ingredient? access_token=【access_token令牌口令】

(4)菜品識别

https:∥aip.baidubce.com/rest/2.0/image-classify/v2/dish?access_token=【access_token令牌口令】三、组件设计

本程序使用wxbit在线版(app.wxbit.com)(图2)。

四、程序设计

(1)变量和初始化

变量Apikey和Secretkey存储两个KEY,需要你自行申请。

初始化程序利用Apikey和Secretkey,通过HTTP客户端1GET请求的实时申请,得到JSON文本,然后将返回的JSON保存在列表Access_token_list中,再提取令牌值保存在变量Access_token中。

列表变量returnplant、plantlist、highscoreplant和baike分别存储通过HTTP客户端2POST请求返回的JSON文本、种类列表、最高置信度的种类列表和相关的百科简介。

变量image存储待识别照片(图3)。

(2)GET请求文本处理(HTTP客户端1)

初始化GET请求成功后,从获得的JSON文本中提取令牌口令,保存在变量Access_token中备用(图4)。

(3)选择识别种类

这就是本例新添加的部分了,种类有4种:植物识别,动物识别,果蔬食材,菜品识别。注意这4种是有顺序的(图5)。

这里需要一个图像处理插件TaifunImage.aix,可以百度搜索在网上下载(图6)。

(4)选择待识别图片

点击选择要识别的图片,可以事先拍摄好,然后导入图像组件中,调整大小后,显示出来,同时清空上一次识别的所有数据(图7)。

(5)拍照植物图片

通过手机的拍照功能,把待识别种类的照片直接拍照,注意一定尽量的清晰,对比度适中,否则识别可能会出错,或是识别不准确。拍摄完成后,处理图片过程与选择图片类似(图8)。

(6)开始识别

先将图片路径中的无用字符清除,作为HTTP客户端2的POST请求地址。请求地址需要符合格式要求,要有请求头和令牌口令才能请求成功。

POST请求网址前文已经介绍过不再详述。

POST请求时,必须将待识别图片转换成base64编码,存储在HTTP客户端创建的列表中,然后通过HTTP客户端2获取这些数据后,进行处理和提取,得到我们想要的数据。

base64编码是数据传输中常用的编码,本报今年第4、5期有相关文章,可以参考。SirnpleImage.aix组件是base64编码插件,需要去网上下载,导入后即可使用。也就是说,POST请求数据时,是按照base64编码请求的(图9)。

(7)POST請求获得文本(HTTP客户端2)

这部分是功能升级的主要更新部分,如果请求成功(响应代码为200),返回参数如表(3个层级)(图10)。

将返回的数组解码为JSON文本,保存在列表变量retumplant中。然后将识别结果存储在列表plantlist中,它包括所有置信度的植物信息,即识别的种类可能很多,但置信度(也可以理解为可信度)不同,其值从高到低排列,我们只取置信度最高的一项,存储在列表highscoreplant中。并从中提取植物的名字和置信度值,在文本中显示出来。

在列表highscoreplant中还有相关百科知识,只是列表维度太高,提取时稍有难度。百科简介显示出来,从中也能学到很多相关知识(图11)。

五、调试

每增加一个种类,就需要测试一遍,正确以后再进行下一个种类的代码,以保证每一步的正确性。最后完善程序设计和uI设计。本例程序只在植物识别的基础上添加了3个种类,改动不多。主要难点在于处理数据列表时,由于种类的增加更复杂了。检索数据时,需要一步步测试,才能了解数组(列表或字典)的意义。

百度AI可以添加的项目还有很多,比如货币、车辆、红酒、地标、Logo等,可以根据自己的兴趣添加。参考资料可以在百度智能云申请Apikey时,查看相关说明文档(图12)。

相关源代码和素材均在百度网盘,下载链接请添加微信公众号壹零社,如有问题也可以和壹零社小助理联系。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/xueshu/246573.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号