最近做一個項目,用樹莓派和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識別二維碼的例程,即可正確識別帶有中文的二維碼了