0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python中pyzxing安裝與測(cè)試方法

OpenCV學(xué)堂 ? 來源:OpenCV學(xué)堂 ? 作者:OpenCV學(xué)堂 ? 2022-06-12 16:50 ? 次閱讀

引子

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è)試如下:

fa9fe6c4-ea27-11ec-ba43-dac502259ad0.png

相關(guān)解碼函數(shù)

相關(guān)功能與函數(shù)說明可以直接訪問這個(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 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ā)演示

在實(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碼的解碼為例說明:
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

fad250a0-ea27-11ec-ba43-dac502259ad0.png

fb048f66-ea27-11ec-ba43-dac502259ad0.png

fb509e56-ea27-11ec-ba43-dac502259ad0.png

解碼輸出

fbfafe0a-ea27-11ec-ba43-dac502259ad0.png

原文標(biāo)題:OpenCV+pyzxing實(shí)現(xiàn)條碼解析

文章出處:【微信公眾號(hào):OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4276

    瀏覽量

    62313
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4766

    瀏覽量

    84361
  • 解碼庫(kù)
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    6566

原文標(biāo)題:OpenCV+pyzxing實(shí)現(xiàn)條碼解析

文章出處:【微信號(hào):CVSCHOOL,微信公眾號(hào):OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用Python進(jìn)行Ping測(cè)試

    在網(wǎng)絡(luò)工程,Ping測(cè)試是一種常用的網(wǎng)絡(luò)診斷工具,用于檢查網(wǎng)絡(luò)連接的可達(dá)性和響應(yīng)時(shí)間。Ping測(cè)試通過向目標(biāo)主機(jī)發(fā)送ICMP(Internet Control Message Protocol
    的頭像 發(fā)表于 08-12 17:56 ?417次閱讀
    使用<b class='flag-5'>Python</b>進(jìn)行Ping<b class='flag-5'>測(cè)試</b>

    python 學(xué)習(xí):在內(nèi)網(wǎng) python庫(kù)-numpy 安裝方法,升級(jí)pip3版本的指令

    \\\\numpy-1.26.4-cp311-cp311-win_amd64.whl 內(nèi)網(wǎng)升級(jí)pip 升級(jí)版本的指令: python.exe -m pip install --upgrade pip--proxy \"http://gateway.schneider.z
    發(fā)表于 04-22 17:18

    Python自動(dòng)化測(cè)試框架及其應(yīng)用

    Pytest是一個(gè)非常成熟的全功能的Python測(cè)試框架,與python自帶的unittest測(cè)試框架類似,但是比unittest框架使用起來更簡(jiǎn)潔,功能更強(qiáng)大。
    的頭像 發(fā)表于 04-03 16:15 ?493次閱讀
    <b class='flag-5'>Python</b>自動(dòng)化<b class='flag-5'>測(cè)試</b>框架及其應(yīng)用

    基于Python的地圖繪制教程

    本文將介紹通過Python繪制地形圖的方法,所需第三方Python相關(guān)模塊包括 rasterio、geopandas、cartopy 等,可通過 pip 等方式安裝。
    的頭像 發(fā)表于 02-26 09:53 ?1083次閱讀
    基于<b class='flag-5'>Python</b>的地圖繪制教程

    如何使用linux下gdb來調(diào)試python程序

    如何使用linux下gdb來調(diào)試python程序? 在Linux下,可以使用GDB(GNU調(diào)試器)來調(diào)試Python程序。GDB是一個(gè)強(qiáng)大的調(diào)試工具,可以幫助開發(fā)者診斷和修復(fù)程序的錯(cuò)誤。在本文
    的頭像 發(fā)表于 01-31 10:41 ?2357次閱讀

    python運(yùn)行環(huán)境的安裝和配置

    Python是一種非常流行的編程語(yǔ)言,廣泛應(yīng)用于科學(xué)計(jì)算、Web開發(fā)、人工智能等領(lǐng)域。為了能夠正常運(yùn)行Python程序,我們需要先安裝和配置Python運(yùn)行環(huán)境。本文將為您詳盡介紹
    的頭像 發(fā)表于 11-29 16:17 ?1075次閱讀

    查看python安裝路徑的方法

    方法一:使用Python自帶安裝程序的默認(rèn)路徑 Python安裝程序通常會(huì)將Python
    的頭像 發(fā)表于 11-29 14:54 ?1.1w次閱讀

    python安裝后idle在哪兒

    Python 是一種非常流行的編程語(yǔ)言,它使用簡(jiǎn)單且易于理解的語(yǔ)法,使得它成為初學(xué)者和專業(yè)開發(fā)人員的首選。Python安裝非常簡(jiǎn)單,您只需在官方網(wǎng)站上下載適合您操作系統(tǒng)的安裝包,然
    的頭像 發(fā)表于 11-29 14:52 ?1122次閱讀

    python shell怎么用

    Python Shell是一種交互式解釋器,可以通過命令行直接運(yùn)行Python代碼。在Shell,可以輸入一行代碼并立即得到結(jié)果,非常適合于測(cè)試、嘗試新代碼或進(jìn)行簡(jiǎn)單的任務(wù)。本文將詳
    的頭像 發(fā)表于 11-29 14:36 ?1058次閱讀

    運(yùn)行Python程序的幾種常見方法

    : 使用Python解釋器 Python解釋器是運(yùn)行Python程序的基本工具。在命令行輸入 python 命令,即可啟動(dòng)解釋器。然后輸入
    的頭像 發(fā)表于 11-28 15:32 ?2301次閱讀

    python怎么運(yùn)行程序

    Python是一種廣泛使用的編程語(yǔ)言,它的簡(jiǎn)易和可讀性使得它成為初學(xué)者和專業(yè)開發(fā)人員的首選。在運(yùn)行Python程序之前,您需要安裝Python解釋器,然后按照以下步驟進(jìn)行操作。 步驟1
    的頭像 發(fā)表于 11-24 09:25 ?2458次閱讀

    windows7可以安裝python什么版本

    Windows 7可以安裝多個(gè)Python版本,以下是適用于Windows 7的常見Python版本: Python 2.7:Python
    的頭像 發(fā)表于 11-23 17:15 ?2.7w次閱讀

    pythontext的用法

    Python的text是一個(gè)常見的數(shù)據(jù)類型,它用于存儲(chǔ)和處理文本數(shù)據(jù)。在Python,文本常常被表示為字符串(string),字符串是一系列Unicode字符的有序序列。 在
    的頭像 發(fā)表于 11-23 15:46 ?3228次閱讀

    pycharmpython interpreter怎么設(shè)置

    在PyCharm設(shè)置Python解釋器非常簡(jiǎn)單,只需按照以下步驟操作: 打開PyCharm,并打開你的項(xiàng)目。 在菜單欄中選擇"File"(文件),然后選擇"Settings"(設(shè)置)。在
    的頭像 發(fā)表于 11-22 11:08 ?2954次閱讀

    python調(diào)用math函數(shù)的方法

    。本文將詳細(xì)介紹math模塊的各種數(shù)學(xué)函數(shù)的調(diào)用方法,包括函數(shù)的功能、參數(shù)的使用和返回值的含義等方面,以幫助讀者更好地理解和應(yīng)用這些函數(shù)。 一、導(dǎo)入math模塊 要使用math模塊
    的頭像 發(fā)表于 11-22 11:01 ?2657次閱讀