741浏览
查看: 741|回复: 1

古德微智能称重计价仪(二)

[复制链接]
本帖最后由 淄博杨广峰 于 2020-5-23 16:01 编辑

古德微智能称重计价仪是用古德微树莓派实现的一个称重小作品。主要技术有:百度AI图像识别果蔬,称重仪称重量,字典查询数据处理,语音播报、OLED显示。该作品实现了自动识别水果、自动称量水果的质量,调用水果字典取出水果的价格,自动结算所购买水果的总价格。
第二部分 百度AI物体识别
在第一部分中,我们已经成功实现了用称重仪测量物体的重量。接下来,我们考虑的就是如何识别用户选择的商品。这一部分非常重要,因为接下来我们要利用这个识别结果去获取该商品的单价信息,计算用户的消费金额及总金额。
在本案例中,物体识别我们采用的是百度AI接口,接下来,我们就来详细体验百度AI识别商品的过程。
一、创建百度AI应用
1、搜索并进入百度AI平台
202005231501..png
                              
2、点击控制台
202005239927..png
3、登陆百度AI平台
202005231517..png
4、进入图像识别
202005233765..png
5、创建应用
202005232443..png
6、填写应用内容
202005236546..png
202005232127..png
7、查看应用详情
202005233871..png
8、复制秘钥
202005235637..png
9、展开API列表
202005236559..png
10、复制接口地址
202005232370..png
11、获取请求头参数
对于post请求,我们还需要一个请求头参数。

703.png
完成了百度AI的设置,接下来,我们就要开始我们的图形化程序设计了,我们的基本思路为传入相应口令,得到request对象,为request对象添加请求数据和请求头,爬取数据,并对获取的数据进行处理,最后获取我们需要的水果名称。
二、初始化程序数据:
202005238389..png
1、创建ApiKey变量并赋值
使用百度应用中的ApiKey复制结果
2、创建SecretKey变量并赋值
使用百度应用中的SecretKey复制结果
3、创建imgUrl变量并赋值
默认地址是/home/pi/imageTemp/image.jpg,这是树莓派中的图片文件的地址,本案例中摄像头拍照采用默认图片保存地址。
4、创建requestUrl变量并赋值
使用百度应用中的Api接口地址复制结果
5、创建并获取AccessToken变量并赋值
以ApiKey和SecretKey为参数生成数据口令。
三、准备爬取参数
202005231635..png
1、将图片文件转换为base64位数据格式
此处的图片文件为树莓派默认的图片保存地址。
2、创建一个空字典params
在实际请求地址的获取中,需要在原有地址的基础上追加一个参数,这个参数是以字典的形式传输。
3、给params字典添加数据
此处的imgdata为base64位数据格式
4、对字典params进行urlencode编码
注意编码是对整个字典进行,不是仅对于imgdata。此处很容易出错,进行到这一步,走了很多弯路,最后得到古德微花老师和王老师的多次指点,才得以改正。
四、爬取相应数据
202005232550..png
1、请求地址添加AccessToken
使用字符串拼接的方法,在原有Api接口地址的基础上拼接一个访问口令。
2、创建request请求对象
为将要爬取的requestUrl初始化一个请求对象。
3、为请求对象添加识别参数
字典params中存储的是图片数据,其实,就是添加待识别的图片参数。
4、为请求对象添加请求头
使用我们在百度应用中获取的请求头。至此,生成了一个完整的请求对象。
5、获取request请求的response响应
至此,我们的数据爬取工作顺利结束。
五、数据处理
202005234417..png
1、将返回结果转变为字典jsonRet
取得的数据为一个字典,命名为jsonRet。
2、从字典jsonRet取中键为result的值,并赋值给resultList
取得的值为一个列表,命名为resultList
3、获取列表resultList的第1项
此时,数据为一个字典,命名为resultDic
4、从resultDic字典获取键为name的值
这个name键所对应的值即为我们最终识别的果蔬的名称。
六、定制化图像识别与通用图像识别的比较
1、关于定制化图像识别:
优点是程序简单,可以使用现成的积木块:
202005239631..png
在定制化图像识别中,用户可直接使用已经封装好的积木来实现。在上面的积木中已经封装了第三部分与第四部分积木,使用起来非常方便,大家可以直接使用。
定制化图像识别缺点是数据采集困难,需要用户采集相应的数据集,打包上传。用到什么,必须上传什么,而且数据的清晰度和数据量都直接影响着识别结果。
2、关于非定制化图像识别:
优点是不需要用户采集数据,百度数据库中已经做好了很多很多数据,这些数据无论是质量还是数据都用单独用户无法完成的。这些数据,我们可以直接使用,不需要用户单独采集,单独上传。
但是,图形化编程相对麻烦,需要对python编程有一点了解。
七、封装的意义
其实,如果将上述的非定制化图像的识别也封装成一个简单的积木,操作起来应该没有难度。但是把所有的大段程序都封装起来,对用户来说,是好事还是坏事?应该说,封装的越多,用户使用就越方便。但同时,封装的越多,用户学到的东西会越少。如果站在体验功能的角度来看,封装越多越好,如果站在python编程学习的角度来看,图形化软件仅需要封装基本功能。
好了,至此,我们的百度API识别工作就结束了,现在,你可以在树莓派中传入一张水果的照片,测试一下你的识别结果吧。

DFrJ5KYVQaH  中级技匠

发表于 2020-5-24 10:36:19

详细的文章必读
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail