python 二維碼識別包 pyzbar zxing使用簡介


 

一、Python下二維碼識別包的使用詳情

在python下二維碼識別,目前主要有三個模塊:zbar 、zbarlight、zxing。

未使用zbarlight,原因是zbarlight和zbar的dll相同,二維碼識別准去率沒提升。另外,該包的pip安裝存在一些問題未解決。

 

1、安裝包:

pip install opencv-python

pip install pillow image zxing

pip install pyzbar

 

2、 安裝使用包過程中遇到的問題:

A、使用zxing是,出現“FileNotFoundError: [WinError 2”

解決辦法:安裝java(jdk、jre都可以)。原因是zxing要調用一些java文件,要求java文件可被執行。

B、安裝zbarlight出現“Microsoft Visual C++ 14.0 is required.”

解決辦法:放棄。 原因:安裝完vc_redist.x86后,還是會報相關的錯誤。

4、 使用詳情

Pyzbar和zxing識別4張包含二維碼的圖片(圖片如下),目前都只識別出來了前兩張。微信(支付寶)掃一掃,4張都可以識別出來

 

pyzbar相關代碼:

 

import pyzbar.pyzbar as pyzbar
from PIL import Image, ImageEnhance


def zabr_parser(image):
    img = Image.open(image)
    # img = ImageEnhance.Brightness(img).enhance(2.0)#增加亮度
    # img = ImageEnhance.Sharpness(img).enhance(17.0)#銳利化
    # img = ImageEnhance.Contrast(img).enhance(4.0)#增加對比度
    img = img.convert('L')#灰度化
    img = img.convert("1")
    img.show()

    barcodes = pyzbar.decode(img)
    for barcode in barcodes:
        barcodeData = barcode.data.decode("utf-8")
        print(barcodeData)

zxing相關代碼:

 1 from PIL import Image
 2 import zxing  # 導入解析包
 3 
 4 
 5 def ocr_qrcode_zxing(filename):
 6     img = Image.open(filename)
 7     zx = zxing.BarCodeReader()  # 調用zxing二維碼讀取包
 8     data = ''
 9     zxdata = zx.decode(filename)  # 圖片解碼
10     return zxdata.parsed  # 返回記錄的內容

 

4、使用的圖片

 

 

 

 

 

二、對比:

1、zbar和zbarlight內核一致,都是基於zbar的dll編譯加載的。zbarlight使用比zbar更簡單,不過是在zbar的基礎又做了封裝,增加易用性,二維碼識別准確率沒有提高。

2、zxing是基於java的zxing核心的python分支,其原理是調用javaw 加載zxing的core.jar包,再獲取輸出結果。

3、微信和支付寶的掃一掃功能較python的這三個包強大很多,是有自己的算法(微信掃一掃使用了zxing,應該做了一定的修改。參考https://my.oschina.net/yushulx/blog/495471)

 

 

參考文檔:https://www.php.cn/python-tutorials-373780.html

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM