一起学习二维码(二)配置解码环境
小白最近需要做一个和二维码相关的项目,因此近期小白会陆陆续续的为大家带来一些和二维码相关的分享。
接下来小白分享一下如何在Windows下生成含有指定信息的二维码以及在Ubuntu系统下解析二维码
由于项目需要,对二维码的解码有可能需要移植在嵌入式的控制板中,为了使后续移植变得方便,我决定在Ubuntu14.04(64位)系统下实现对二维码的解码。
现在对于二维码的解码已经做的很成熟了,网上开源的库也有很多,例如ZXing,zbar等等。但是很多都是应用在手机端(毕竟手机使用二维码的机会多一些),因此主要的接口和网上的教程都是java的。作为一个勉强会使用C++的小白来说,当然要努力去寻找一个C++教程多一些的开源库。因此,通过各种查找,最后决定使用zbar库来实现解码。
首先需要下载和安装zbar库,网上有一些教程,不过大多数的教程都比较坑,安装的过程中也会出现各种问题,经过实践,结合自己实际情况,最终安装成功了。
具体的心酸流程如下:
下 载 源 码
网上的教程大多数第一步都是让安装Imagemagick及其依赖jasper-for jpeg。小白一开始也想安装的,但是安装过程和教程几乎可以说是0,因此小白放弃了(还好最后也没有用到也安装成功了) imagemagick 是一个强大的图像编解码及操作的开源库,因此这里面也是只要图片格式符合要求,是否安装这个用处也不是很大。
接下来是安装pygtk,这步就按照命令直接安装就可以,没有坑,命令是
sudo apt-get install python-gtk2-dev
之后开始正式的安装了,首先要下载zbar的源码,http://zbar.sourceforge.net/download.html,其中小白选用的是Source Code版本里面的第一个ZBar-0.10。之后对其进行解压缩,使用的命令是:
tar jxvf zbar-0.10.tar.bz2
安 装
解压缩后进入文件夹中,执行:./configure --prefix="your path",其中小白将路径选择缺省,即:
./configure –prefix=""
此时是默认安装在/usr/local/bin目录下,不过事情并没有这么顺利,这样做会出现一个报错,内容如下:
不过这问题也不是很坑,只要采用一个软连接就可以解决了:
ln -s /usr/include/libv4l1-videodev.h /usr/include/linux/videodev.h
这之后再执行上面的./configure –prefix=""命令就配置成功了,如下图:
之后要进行编译,这步坑就很多啦。直接运行sudo make,会出现报错,报错内容是:
这里只选取了错误提示的一部分(真实的错误界面有可能会非常的丰富多彩)。这个网上说在configure下增加一行export CFLAGS="",于是小白遍去文件里加了一行export CFLAGS="",哈哈,还是报错。之后呢,小白仔细读了这句话,直接在命令界面运行了这句话,并在文件中添加了CFLAGS="",最后重新运行./configure –prefix=""命令问题解决。
之后再进行make,又出现一堆的报错,报错内容太多,为了方便小伙伴们区分,我只截取了开头和结尾
这个问题呢,小白尝试了多次的make,最后关掉了命令窗口,再次make一下就成功了,成功的提示如下:
make all-am
make[1]: Entering directory '/home/mingc/Downloads/qrcode/zbar-0.10'
make[1]: Leaving directory '/home/mingc/Downloads/qrcode/zbar-0.10'
之后便是安装,这里面一定要记得加sudo,不然是安装不上的。
sudo make install
安装成功后的提示是:
make install-am
make[2]: Leaving directory '/home/mingc/Downloads/qrcode/zbar-0.10'
make[1]: Leaving directory '/home/mingc/Downloads/qrcode/zbar-0.10'
这就是安装成功啦
结 果 测 试
采用系统自带的测试历程测试是否成功安装
zbarimg 小白.png
读取的二维码是之前自己用程序生成的
从Ubuntu导到windows下图片就变黑了,有可能是晒了个太阳吧,但是并不妨碍小伙伴们验证。
输出的结果为:
自此我们已经完成了zbar库的安装,后续会继续更新如何使用这个二维码解码库。
小白在安装的时候主要参考以下博客:
https://blog.csdn.net/felix86/article/details/41443741
https://www.cnblogs.com/mingc/p/7945733.html