引子
Python中有幾個開源的條碼解析庫,之前我測試過pyzbar、libdmx這些庫,發(fā)現(xiàn)都是個錘子,主要是功能太弱了,解碼能力堪憂,之前我用ZXING C++版本寫過一很好用的條碼跟二維碼的解碼庫,于是我搜索一下看看是否有Python版本的ZXING,發(fā)現(xiàn)真有就是pyzxing,但是需要注意的是,它不是基于ZXing C++的,它是通過Python調(diào)用Java的依賴實現(xiàn)解碼的,而且默認是支持hard模型跟旋轉模式解碼的。pyzxing安裝與測試
https://pypi.org/project/pyzxing/
pyzxing在python下安裝特別簡單,只需要一條命令行執(zhí)行:
pip install pyzxing
但是它其實是依賴OpenJDK才能運行的,推薦最好安裝1.8版本,下載地址如下:
https://www.oracle.com/java/technologies/downloads/#jdk18-windows
安裝好之后,cmd運行測試如下:

相關解碼函數(shù)
相關功能與函數(shù)說明可以直接訪問這個頁面:
https://pypi.org/project/pyzxing/
它支持三種輸入
-直接輸入圖像文件名,然后解碼-使用opencv-python讀取圖像,輸入numpy數(shù)據(jù)解碼-使用目錄通配符,支持一次多張解碼操作
相關函數(shù)演示代碼如下:
from pyzxing import BarCodeReaderreader = BarCodeReader()results = reader.decode('/PATH/TO/FILE')# Or file pattern for multiple filesresults = reader.decode('/PATH/TO/FILES/*.png')print(results)# Or a numpy array# Requires additional installation of opencv# pip install opencv-pythonresults = reader.decode_array(img)
OpenCV-Python解碼開發(fā)演示
在實際使用ZXING的解碼中,首先需要做的就是各種圖像預處理,因為多數(shù)工業(yè)噴碼的圖像質(zhì)量都很一般,直接ZXING解碼一次成功率大概只有50%左右,都需要通過各種預處理之后輸入到ZXING二次解碼,二次解碼成功率會提升到95%左右,這個時候需要針對那些特別難的碼進行更深度的預處理跟重新裁剪然后三次解碼,總的三次解碼成功率可以達到99%左右。這個里面涉及特別多解碼細節(jié)問題。這里以最簡單的幾個工業(yè)常見的DataMatrix碼的解碼為例說明:
frompyzxingimportBarCodeReader
importcv2
importos
code_roi=cv2.imread(os.path.join(test_dir,f),cv2.IMREAD_GRAYSCALE)
cv2.bitwise_not(code_roi,code_roi)
ret,binary=cv2.threshold(code_roi,0,255,cv2.THRESH_BINARY|cv2.THRESH_OTSU)
se=cv2.getStructuringElement(cv2.MORPH_RECT,(3,3))
binary=cv2.erode(binary,se)
results=reader.decode_array(binary)
found=False
forresultinresults:
code_txt=result.get('parsed')
ifcode_txtisnotNone:
print("decodecontent:",code_txt)
print("codetype:",result.get('format'))
found=True



解碼輸出

原文標題:OpenCV+pyzxing實現(xiàn)條碼解析
文章出處:【微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。
審核編輯:湯梓紅
-
函數(shù)
+關注
關注
3文章
4409瀏覽量
66983 -
python
+關注
關注
57文章
4861瀏覽量
89671 -
解碼庫
+關注
關注
0文章
3瀏覽量
6677
原文標題:OpenCV+pyzxing實現(xiàn)條碼解析
文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
沒有專利的opencv-python 版本
Termux中調(diào)試圣誕樹Python代碼
開關電源測試流程方法合集
MA35-RTT如何安裝 Python 和 Libusb (Windows) ?
termux如何搭建python游戲
在Python中字符串逆序有幾種方式,代碼是什么
linux虛擬環(huán)境中調(diào)用Linux 版matlab編譯的python庫時出錯
【VisionFive 2單板計算機試用體驗】安裝openplc
Hi3861 wifiiot_hispark_pegasus 按教程安裝python3 -m pip install build/lite 報錯
?如何在虛擬環(huán)境中使用 Python,提升你的開發(fā)體驗~
使用Python實現(xiàn)xgboost教程
Flexus 云服務器 X:Python 安裝的極致便捷之旅
華為云 Flexus X 實例下的場景體驗——小企業(yè)使用 Python 語言——超迅速搭建簡單公網(wǎng) API 接口服務

Python中pyzxing安裝與測試方法
評論