树莓派+OpenCV+Arduino实现二维码与颜色识别检测及物料抓取总结

1. 系统总体设计和分析

系统总体分为硬件设计和软件设计,硬件设计就是基于树莓派2代B型和Arduino的硬件基础平台搭建,能够适应小型、灵活的现实需求,并为软件设计提供可观的计算能力承载和算法改进空间。软件设计就是在嵌入式Arduino上构建控制系统,用来控制物料车基本的移动,机器臂的抓取,摄像头的位置等操作,而在树莓派上构建软件开发环境,在OpenCV框架下,通过C++语言实现二维码的检测和颜色的识别。

2. 系统硬件系统设计

 硬件包括Arduino Mega2560、树莓派 2 代 B 型、摄像头模块(720P)、对接串口线、SD存储卡,HDMI toVGA转接器、VGA 显示器、USB 键盘鼠标。
 本系统使用的摄像头是 360D70 智能摄像头内核,该摄像头支持 720P 高清分辨率,镜头视角对角视角120度,可以保证监控区域的无死角监控;其次,该摄像头支持红外线以及USB 免驱接口输入,便于本项目系统中各个模块的集成。
在这里插入图片描述
                   图1硬件系统关系图

3. 系统软件系统设计

 本系统中要解决的主要两个问题是二维码的识别和物料颜色的识别。

3.1 二维码的识别

 二维码图像识别的流程是:采集图像、图像预处理、条形码识别,得到图像中的条形码信息。需要解决好二个问题,即图像处理和条形码识别问题。

(1)图像处理问题

图像处理部分是条码识别的前期工作,需要使用强大的图象处理工具来进行,包括图像的读入、条形码区域的裁剪、滤波、二值化处理等,得到高质量图像。条码识别就是在这个图像的基础上实现,所以图像处理的质量直接关系到条码能否正确识别。
本系统中树莓派采用官方的 Linux 操作系统, 适合于本系统中基于 OpenCV 框架下的算法移植。OpenCV 是一个基于 BSD 许可(开源)发行的跨平台计算机视觉库,可以运行在 Linux、Windows 和 Mac OS 操作系统上。 它轻量级而且高效———由一系列 C 函数和少量 C++类构成,同时提供了 Python、Ruby、MATLAB 等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法,本文拟采用OpenCV 及其 C++接口完成算法移植和软件系统搭建。

(2)二维码识别问题

 条形码识别问题,就是采用什么方法把图像上的条形码转化成相应的文本信息。如果采用根据条形码编码原理来识别条码,因为条形码种类多,每种条形码编码方式不同,开发人员不仅要熟悉各种条形码的编码规则,而且要针对每种条形码编写相应的解码程序,具有实现起来难度大、编程量大等缺点。而采用条形码识别工具包来进行条形码识别,一可以大大简化编程工作量;二不需要熟悉各种条形码的编码规则,识别工具包都能自行判断;三来识别率高、速度快。
 目前条形码识别工具包有很多,但开源的条形码开发工具包不多,主要有两个,一是Zbar工具包,另一是ZXing工具包,两者都具有解码多种格式的一维和二维条形码功能,并且这两种工具包支持多平台和多语种版本供开发者使用。ZBar工具是基于C语言编写,解码效率高于ZXing,所以在Linux平台下,结合OpenCV进行条形码识别,首选Zbar工具包。
 Zbar条形码工具包的环境设置,只涉及到一个库文件libzbar-0.lib和一个头文件Zbar.h,把库文件复制到OpenCV的库文件目录下,把头文件Zbar.h加到当前编译的工程中就可以了,编译时就可以就能找到这些文件进行编译。
 识别的第二步是获取要识别的图像,获取图像的方法是通过电脑摄像头或者其他图像采集设备,实时获取要识别的条形码图像, 方法是利用OpenCV的库函数,先创建设备和图像两个变量。然后利用库函数获取摄像头中的图像,就可以从摄像头中获取图像。
 图像预处理的目标是提高别的速度和识别的正确率。简单的图像处理方法是对整幅图像进行去噪声和二值化处理;复杂的处理方法是从整个图像中裁剪取条形码区域,去噪声和二值化,必要时还要进行旋转、放大和缩小等处理,最终获得高质量的图像。
 图像预处理好了,就可以利用Zbar进行条形码的识别,需要如下步骤:

  1. 创建并设置Zbar图像阅读器;
  2. 获取图像信息;
  3. 从图像中识别条形码数据;
  4. 把识别的数据从UTF8格式转成ASCII格式。

 要从图像中识别条形码,必须先创建Zbar图像阅读器,并且进行相应设置。Zbar阅读器设置好了以后,接着读入图像,获取图像信息,为识别条形码做准备。
 上述识别准备工作做好以后,接下就是从图像中读取条形码数据,把识别的数据从UTF8格式转成ASCII格式,这样识别出来的条形码数据变量就可以对该数据根据需要进行相应的处理。

  • 58
    点赞
  • 554
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值