最近做一个项目,用树莓派和USB摄像头识别带有中文信息的二维码并且将信息在oled屏幕显示,本来以为难度不大,没想到遇到了不少麻烦,现在项目做完了,回过头来复盘一下
主要参考的博客有:
二维码识别部分:https://blog.csdn.net/sinat_35162460/article/details/90245448 、https://blog.csdn.net/zx66zx/article/details/82785334
扫描信息在oled屏幕显示:https://blog.csdn.net/wangzhenyang2/article/details/80299625
二维码的识别我们考虑使用zbar、pyzbar和OpenCV,在python2.7和python3.5环境中均可以运行
zbar是用于从各种来源读取条形码的开源套件,在这里就不详细介绍了
首先搭建树莓派上的环境
一、安装zbar
方法一、使用命令行:sudo apt-get install python-zbar
方法二、使用源码安装zbar,此方法可以识别中文
1、使用wget命令从指定的URL下载zbar源码:
wget http://downloads.sourceforge.net/project/zbar/zbar/0.10/zbar-0.10.tar.gz
2、解压zbar的源文件,解压至pi目录下的zbar-0.10文件夹
tar -zvxf zbar-0.10.tar.gz
3、安装编译时需要编译器,安装python-gtk和libqt4-dev
sudo apt-get install python-gtk2-dev
sudo apt-get install libqt4-dev
4、修改zbar的中文支持
cd进入zbar-0.10/zbar/qrcode目录,使用nano编辑器打开qrdectxt.c文件
cd zbar-0.10
cd zbar
cd qrcode
sudo nano qrdectxt.c
找到默认编码函数,将ISO8859-1换成UTF-8
找到默认编码定义的list,修改解码编码顺序为:
enc_list[0]=utf8_cd
5、进入zbar-0.10文件夹,运行configure命令如下,生成makefile
./configure --without-imagemagick -disable-video -without-qt -without-gtk -without-x
6、编译makefile
make
7、make安装
sudo make install
安装完成后进入python环境import zbar,发现无法在python中import到
解决办法:编译安装完成后,将usr/local/lib文件夹下与zbar有关的三个.so文件移动到/lib/arm-linux-gnueabihf下,这样python调用zbar库就不会报错
二、安装pyzbar
使用命令行安装pyzbar
sudo pip install pyzbar
三、安装OpenCV
参考https://blog.csdn.net/sinat_35162460/article/details/84245240
再使用python识别二维码的例程,即可正确识别带有中文的二维码了