引子
Python中有幾個(gè)開源的條碼解析庫(kù),之前我測(cè)試過pyzbar、libdmx這些庫(kù),發(fā)現(xiàn)都是個(gè)錘子,主要是功能太弱了,解碼能力堪憂,之前我用ZXING C++版本寫過一很好用的條碼跟二維碼的解碼庫(kù),于是我搜索一下看看是否有Python版本的ZXING,發(fā)現(xiàn)真有就是pyzxing,但是需要注意的是,它不是基于ZXing C++的,它是通過Python調(diào)用Java的依賴實(shí)現(xiàn)解碼的,而且默認(rèn)是支持hard模型跟旋轉(zhuǎn)模式解碼的。pyzxing安裝與測(cè)試
https://pypi.org/project/pyzxing/
pyzxing在python下安裝特別簡(jiǎn)單,只需要一條命令行執(zhí)行:
pip install pyzxing
但是它其實(shí)是依賴OpenJDK才能運(yùn)行的,推薦最好安裝1.8版本,下載地址如下:
https://www.oracle.com/java/technologies/downloads/#jdk18-windows
安裝好之后,cmd運(yùn)行測(cè)試如下:
相關(guān)解碼函數(shù)
相關(guān)功能與函數(shù)說(shuō)明可以直接訪問這個(gè)頁(yè)面:
https://pypi.org/project/pyzxing/
它支持三種輸入
-直接輸入圖像文件名,然后解碼
-使用opencv-python讀取圖像,輸入numpy數(shù)據(jù)解碼
-使用目錄通配符,支持一次多張解碼操作
相關(guān)函數(shù)演示代碼如下:
from pyzxing import BarCodeReader
reader = BarCodeReader()
results = reader.decode('/PATH/TO/FILE')
# Or file pattern for multiple files
results = reader.decode('/PATH/TO/FILES/*.png')
print(results)
# Or a numpy array
# Requires additional installation of opencv
# pip install opencv-python
results = reader.decode_array(img)
OpenCV-Python解碼開發(fā)演示
在實(shí)際使用ZXING的解碼中,首先需要做的就是各種圖像預(yù)處理,因?yàn)槎鄶?shù)工業(yè)噴碼的圖像質(zhì)量都很一般,直接ZXING解碼一次成功率大概只有50%左右,都需要通過各種預(yù)處理之后輸入到ZXING二次解碼,二次解碼成功率會(huì)提升到95%左右,這個(gè)時(shí)候需要針對(duì)那些特別難的碼進(jìn)行更深度的預(yù)處理跟重新裁剪然后三次解碼,總的三次解碼成功率可以達(dá)到99%左右。這個(gè)里面涉及特別多解碼細(xì)節(jié)問題。這里以最簡(jiǎn)單的幾個(gè)工業(yè)常見的DataMatrix碼的解碼為例說(shuō)明:
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
解碼輸出
原文標(biāo)題:OpenCV+pyzxing實(shí)現(xiàn)條碼解析
文章出處:【微信公眾號(hào):OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
審核編輯:湯梓紅
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4346瀏覽量
62977 -
python
+關(guān)注
關(guān)注
56文章
4807瀏覽量
85040 -
解碼庫(kù)
+關(guān)注
關(guān)注
0文章
3瀏覽量
6589
原文標(biāo)題:OpenCV+pyzxing實(shí)現(xiàn)條碼解析
文章出處:【微信號(hào):CVSCHOOL,微信公眾號(hào):OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
使用Python實(shí)現(xiàn)xgboost教程
Python中dict支持多個(gè)key的方法
電腦是已經(jīng)安裝了python2.7,為什么打開GUI的script window時(shí),一直提示未找到python2.7?
家用斷路器的安裝方法
使用Python進(jìn)行Ping測(cè)試
![使用<b class='flag-5'>Python</b>進(jìn)行Ping<b class='flag-5'>測(cè)試</b>](https://file1.elecfans.com/web2/M00/02/FD/wKgaoma53G-AaVZUAABUXbtkmLo864.jpg)
Python在AI中的應(yīng)用實(shí)例
如何實(shí)現(xiàn)Python復(fù)制文件操作
基于Python的深度學(xué)習(xí)人臉識(shí)別方法
用pycharm進(jìn)行python爬蟲的步驟
安裝依賴的Python軟件包時(shí)報(bào)錯(cuò)如何解決?
用離線安裝器安裝的idf,其創(chuàng)建的Python虛擬環(huán)境無(wú)激活腳本是怎么回事?
Win10 vscode中無(wú)法編譯,提示python.exe: command not found怎么解決?
python 學(xué)習(xí):在內(nèi)網(wǎng)中 python庫(kù)-numpy 安裝方法,升級(jí)pip3版本的指令
Python自動(dòng)化測(cè)試框架及其應(yīng)用
![<b class='flag-5'>Python</b>自動(dòng)化<b class='flag-5'>測(cè)試</b>框架及其應(yīng)用](https://file1.elecfans.com/web2/M00/C6/E2/wKgZomYNELGAIBRPAAA-Os-O1Ug806.png)
基于Python的地圖繪制教程
![基于<b class='flag-5'>Python</b>的地圖繪制教程](https://file1.elecfans.com/web2/M00/C0/F4/wKgZomXb72KADq8JAABAFRaefm0918.png)
評(píng)論