计算机视觉专家Adrian Rosebrock近日分享了如何借助OpenCV和Zbar,编写出能够实时识别二维码和条形码的扫描程序,最后部署在树莓派上,成功制作一款实用的条形码&二维码扫描设备。
最近有朋友问我(作者Adrian Rosebrock——译者注)OpenCV里有没有什么模块能直接识别条形码和二维码,很遗憾,答案是没有。但是OpenCV能够加快读取条形码和二维码的过程,包括从硬盘加载图像,从视频流中抓取新的帧,并进行处理。 等我们获取图像或视频帧后,就可以将其传入Python中专用的条形码解码库,比如Zbar。 然后Zbar会对条形码或二维码进行解码。OpenCV可以接着执行进一步的图像处理工作以及展示结果。 听起来有些复杂,其实整个处理过程相当简单明了。程序库Zbar也衍生了很多变体,其中pyzbar是我的最爱。
在本文,我会教你怎样用OpenCV和Zbar读取条形码和二维码。而且,我还会展示怎样将我们制作的这个条形码&二维码扫描仪部署到树莓派上!!
使用OpenCV和ZBar打造一款条形码及二维码扫描仪
本文主要分为四部分。
- 在第一部分,我会教你如何安装Zbar库(Python绑定)。
- Zbar库会连同OpenCV一起用于扫描条形码和二维码。
- 等正确配置好Zbar和OpenCV以后,我会展示如何用它们扫描一张图像上的条形码和二维码。
- 先识别一张图像上的条形码和二维码练练手后,我们就进入下一阶段:用OpenCV和Zbar实时读取二维码和条形码。
- 最后,我会展示如何将制作好的实时二维码&条形码扫描仪部署到树莓派上。
安装Zbar(带Python绑定)用于解码条形码&二维码
前段时间Staya Mallick在LearnOpenCV博客上发表了一篇实用教程,讲解如何用Zbar扫描条形码。
本文关于Zbar安装部分基本上是根据这篇博文的指导,但是做了一点改进,主要是围绕安装Python Zbar绑定部分,目的是确保我们能:
使用Python3(官方Zbar Python绑定只支持Python 2.7) 准确地检测和定位图像中二维码及条形码
安装所需的软件,只需简单三步。
第一步:从apt或brew库中安装Zbar
在Ubuntu或树莓派上安装Zbar
$ sudo apt-get install libzbar0
复制代码
在MacOS系统中安装Zbar
使用brew在macOS系统中安装Zbar也很容易(假定你已经安装了Homebrew):
$ brew install zbar
复制代码
第二步:创建一个虚拟环境,安装OpenCV。
这里你有俩个选择: 使用现成的已经安装好了OpenCV的虚拟环境(跳过这一步,看第三步)。 或者创建一个新的独立的虚拟环境,安装OpenCV。
虚拟环境对于Python开发来说是非常实用的做法,我非常鼓励使用虚拟环境。
我选择创建一个新的独立的Python 3 虚拟环境,然后安装了OpenCV,并将环境命名为barcode:
$ mkvirtualenv barcode -p python3
复制代码
注:如果你已经安装好了OpenCV,就可以跳过OpenCV编译过程,只需将你的cv2.so绑定符号链接(sym-link)入你的新Python虚拟环境中的site-pakages目录。
第三步:安装Pyzbar 现在我已经安装了Python 3
虚拟环境,命名为barcode,然后激活了barcode环境,安装pyzbar:
$ workon barcode
$ pip install pyzbar
复制代码
如你不是用的Python 虚拟环境,只需:
$ pip install pyzbar
复制代码
如果想将pyzbar安装到Python版系统中,确保你也使用sudo命令。