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

 

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

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

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

 

一、安裝包:python

pip install opencv-pythonredis

pip install pillow image zxing算法

pip install pyzbar微信

 

二、 安裝使用包過程當中遇到的問題:ui

A、使用zxing是,出現「FileNotFoundError: [WinError 2」spa

解決辦法:安裝java(jdk、jre均可以)。緣由是zxing要調用一些java文件,要求java文件可被執行。.net

B、安裝zbarlight出現「Microsoft Visual C++ 14.0 is required.」

解決辦法:放棄。 緣由:安裝完vc_redist.x86後,仍是會報相關的錯誤。

四、 使用詳情

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  # 返回記錄的內容

 

四、使用的圖片

 

 

 

 

 

2、對比:

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

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

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

 

 

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

相關文章
相關標籤/搜索