親手教你實現(xiàn)pynq-z2條形碼識別功能
1. linux配置
要想實現(xiàn)本項目,首先解決以下三大要點,也著實浪費了很多時間
1.1解決pynq聯(lián)網(wǎng)
pynq聯(lián)網(wǎng)的教程網(wǎng)上可謂是不少,但是我卻整了很久。
首先是在家里,我采用

所示的方法,然后成功ping通外網(wǎng)
在學校時這個方法卻解決不了,我嘗試了網(wǎng)上很多方法都無法解決(可能我太菜了),最終在重新燒錄了幾次鏡像后發(fā)現(xiàn):直接把網(wǎng)線連到宿舍的路由器上就連上外網(wǎng)了...

具體還有關于修改下載源變?yōu)殓R像源的方法可以參考其他博客
1.2解決pyzbar庫下載
這個庫下載推薦采用
pip3 install pyzbar
這個庫安裝的路徑也要注意,命令行下輸入
pip3 show pyzbar
我的在這里:

圖 2.2.1. pyzbar的位置
多說一句,下面的zbar包我采用
sudo apt-get install python-zbar
得到,為什么不用pip3,因為pip3下載這個總是報錯,即使是
pip3 upgrade
也不行,不是pip3版本的問題。
我的linux鏡像是v2.3版本的,不知道大家采用v2.5或者更高會不會好些

圖 2.2.2. zbar的位置
1.3解決jupyter導入庫
1.3.1 首先說明問題的由來
我發(fā)現(xiàn)使用
pip3 install pillow
PIL在jupyter下能導入,但是卻不能導入pyzbar
又發(fā)現(xiàn)在命令行輸入 python3后,可以導入pyzbar,但不能導入zbar

圖 2.3.1. python3導入pyzbar成功,導入zbar不成功
我在命令行輸入pyhton 解釋器下發(fā)現(xiàn)不能導入pyzbar,但可以導入zbar
這就引起了我的注意,最終我發(fā)現(xiàn)原來pip3來的pyzbar有單獨的存儲路徑,apt-get同理
至于為什么python和python3不能引入相同的包
那就得
import sys sys.path
采用語句來觀察,發(fā)現(xiàn)引用路徑不一致。我想我知道了癥結所在:

圖 2.3.2. 不太通順的解釋
$\color{#FF3030}{紅字}$不太通順,翻譯成 人話 就是:
jupyter要設置為 支持引用 存儲pyzbar包的路徑

1.3.2 方法一:
修改環(huán)境變量
說明,以下為引用:
文章源地址:http://www.dhdzp.com/article/256333.htm
Linux 下設置環(huán)境變量有三種方法,一種用于當前終端,一種用于當前用戶,一種用于所有用戶:
一:用于當前終端:
在當前終端中輸入:export PATH=$PATH:<你的要加入的路徑>
不過上面的方法只適用于當前終端,一旦當前終端關閉或在另一個終端中,則無效。
export NDK_ROOT=/home/jiang/soft/Android-ndk-r8e
只能在當前終端使用。
二:用于當前用戶:
在用戶主目錄下有一個 .bashrc 隱藏文件,可以在此文件中加入 PATH 的設置如下:
$ gedit ~/.bashrc
加入:
export PATH=<你的要加入的路徑>:$PATH
如果要加入多個路徑,只要:
export PATH=<你要加入的路徑1>:<你要加入的路徑2>: ...... :$PATH
當中每個路徑要以冒號分隔。
這樣每次登錄都會生效
添加PYTHONPATH的方法也是這樣,在.bashrc中添加
export PYTHONPATH=/home/zhao/setup/caffemaster/python:/home/zhao/setup/mypy:$PYTHONPATH
保存后在終端輸入 $ source ~/.bashrc 使環(huán)境變量立即生效
三:用于所有用戶:
$ sudo gedit /etc/profile
加入:
export PATH=<你要加入的路徑>:$PATH
就可以了。
終端輸入:echo $PATH 可以查看環(huán)境變量
注意,修改環(huán)境變量后,除了第一種方法立即生效外,第二第三種方法要立即生效,可以source ~/.bashrc或者注銷再次登錄后就可以了!
到此引用結束
1.3.3 方法二 :
在代碼中加入語句
import sys
sys.path
sys.path.append('/home/xilinx/.local/lib/python3.6/site-packages')
sys.path是查看jupyter的庫查找路徑,可以查看你的jupyter是否包括了你的包的路徑
一般來說庫導入失敗都是由于這個原因——jupyter庫路徑
這是設置引用額外引用路徑的方法:
sys.path.append('')
可參考這篇文章:http://www.dhdzp.com/article/44107.htm
2. 提供代碼
# 關鍵識別代碼
barcodes = decode(image)
def decode (image,barcodes):
# loop over the detected barcodes
for barcode in barcodes:
# extract the bounding box location of the barcode and draw the
# bounding boxr surrounding the barcode on the image
(x, y, w, h) = barcode.rect
cv2.rectangle(image, (x, y),(x + w,y + h), (255, 0, 0), 5)
# the barcode data is a bytes object so if we want to draw it on
# our output image wre need to convert it to a string first
barcodeData = barcode.data.decode("utf-8")
barcodeType = barcode.type
# draw the barcode data and barcode type on the image
text ="{} ({})". format(barcodeData,barcodeType)
cv2.putText(image,text,(x, y - 10), cv2.FONT_HERSHEY_SIMPLEX,.8, (255, 0, 0), 2)
# print the barcode type and data to the terminal
print("[INFO] Found {} barcode: {}".format(barcodeType,barcodeData))
plt.figure(figsize=(10,10))
plt.imshow(image)
plt.show()
# Decoding barcodes
decode(image,barcodes)最終結果,發(fā)現(xiàn)框框并不是很貼合,可能是照片照的問題。但是識別的結果完全正確

完整代碼請見連接:
http://xiazai.jb51.net/202207/yuanma/QRcode_jb51.rar
打開是.ipynb格式。
到此這篇關于親手教你實現(xiàn)pynq-z2條形碼識別功能的文章就介紹到這了,更多相關pynq-z2條形碼識別內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用pandas實現(xiàn)csv/excel sheet互相轉換的方法
今天小編就為大家分享一篇使用pandas實現(xiàn)csv/excel sheet互相轉換的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
python for循環(huán)如何實現(xiàn)控制步長
這篇文章主要介紹了python for循環(huán)如何實現(xiàn)控制步長,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
Python創(chuàng)建Excel表和讀取Excel表的基本操作
這篇文章主要介紹了Python創(chuàng)建Excel表和讀取Excel表的基本操作,文中通過代碼示例和圖文結合的方式講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-07-07
python用pickle模塊實現(xiàn)“增刪改查”的簡易功能
本篇文章主要介紹了python用pickle模塊實現(xiàn)“增刪改查”的簡易功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-06-06

