2243| 1
|
古德微智能称重计价仪(二) |
本帖最后由 淄博杨广峰 于 2020-5-23 16:01 编辑 古德微智能称重计价仪是用古德微树莓派实现的一个称重小作品。主要技术有:百度AI图像识别果蔬,称重仪称重量,字典查询数据处理,语音播报、OLED显示。该作品实现了自动识别水果、自动称量水果的质量,调用水果字典取出水果的价格,自动结算所购买水果的总价格。 第二部分 百度AI物体识别 在第一部分中,我们已经成功实现了用称重仪测量物体的重量。接下来,我们考虑的就是如何识别用户选择的商品。这一部分非常重要,因为接下来我们要利用这个识别结果去获取该商品的单价信息,计算用户的消费金额及总金额。 在本案例中,物体识别我们采用的是百度AI接口,接下来,我们就来详细体验百度AI识别商品的过程。 一、创建百度AI应用 1、搜索并进入百度AI平台 2、点击控制台 3、登陆百度AI平台 4、进入图像识别 5、创建应用 6、填写应用内容 7、查看应用详情 8、复制秘钥 9、展开API列表 10、复制接口地址 11、获取请求头参数 对于post请求,我们还需要一个请求头参数。 完成了百度AI的设置,接下来,我们就要开始我们的图形化程序设计了,我们的基本思路为传入相应口令,得到request对象,为request对象添加请求数据和请求头,爬取数据,并对获取的数据进行处理,最后获取我们需要的水果名称。 二、初始化程序数据: 1、创建ApiKey变量并赋值 使用百度应用中的ApiKey复制结果 2、创建SecretKey变量并赋值 使用百度应用中的SecretKey复制结果 3、创建imgUrl变量并赋值 默认地址是/home/pi/imageTemp/image.jpg,这是树莓派中的图片文件的地址,本案例中摄像头拍照采用默认图片保存地址。 4、创建requestUrl变量并赋值 使用百度应用中的Api接口地址复制结果 5、创建并获取AccessToken变量并赋值 以ApiKey和SecretKey为参数生成数据口令。 三、准备爬取参数 1、将图片文件转换为base64位数据格式 此处的图片文件为树莓派默认的图片保存地址。 2、创建一个空字典params 在实际请求地址的获取中,需要在原有地址的基础上追加一个参数,这个参数是以字典的形式传输。 3、给params字典添加数据 此处的imgdata为base64位数据格式 4、对字典params进行urlencode编码 注意编码是对整个字典进行,不是仅对于imgdata。此处很容易出错,进行到这一步,走了很多弯路,最后得到古德微花老师和王老师的多次指点,才得以改正。 四、爬取相应数据 1、请求地址添加AccessToken 使用字符串拼接的方法,在原有Api接口地址的基础上拼接一个访问口令。 2、创建request请求对象 为将要爬取的requestUrl初始化一个请求对象。 3、为请求对象添加识别参数 字典params中存储的是图片数据,其实,就是添加待识别的图片参数。 4、为请求对象添加请求头 使用我们在百度应用中获取的请求头。至此,生成了一个完整的请求对象。 5、获取request请求的response响应 至此,我们的数据爬取工作顺利结束。 五、数据处理 1、将返回结果转变为字典jsonRet 取得的数据为一个字典,命名为jsonRet。 2、从字典jsonRet取中键为result的值,并赋值给resultList 取得的值为一个列表,命名为resultList 3、获取列表resultList的第1项 此时,数据为一个字典,命名为resultDic 4、从resultDic字典获取键为name的值 这个name键所对应的值即为我们最终识别的果蔬的名称。 六、定制化图像识别与通用图像识别的比较 1、关于定制化图像识别: 优点是程序简单,可以使用现成的积木块: 在定制化图像识别中,用户可直接使用已经封装好的积木来实现。在上面的积木中已经封装了第三部分与第四部分积木,使用起来非常方便,大家可以直接使用。 定制化图像识别缺点是数据采集困难,需要用户采集相应的数据集,打包上传。用到什么,必须上传什么,而且数据的清晰度和数据量都直接影响着识别结果。 2、关于非定制化图像识别: 优点是不需要用户采集数据,百度数据库中已经做好了很多很多数据,这些数据无论是质量还是数据都用单独用户无法完成的。这些数据,我们可以直接使用,不需要用户单独采集,单独上传。 但是,图形化编程相对麻烦,需要对python编程有一点了解。 七、封装的意义 其实,如果将上述的非定制化图像的识别也封装成一个简单的积木,操作起来应该没有难度。但是把所有的大段程序都封装起来,对用户来说,是好事还是坏事?应该说,封装的越多,用户使用就越方便。但同时,封装的越多,用户学到的东西会越少。如果站在体验功能的角度来看,封装越多越好,如果站在python编程学习的角度来看,图形化软件仅需要封装基本功能。 好了,至此,我们的百度API识别工作就结束了,现在,你可以在树莓派中传入一张水果的照片,测试一下你的识别结果吧。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed