python识别二维码内容的三种方法,分别是pyzbar、zbarlight和zxing。不清楚前两者之间是否底层是同一套算法。zxing的效果要强于前两个算法。
下方img是numpy格式。
- pyzbar
import pyzbar
barcode = pyzbar.decode(img)
(x, y, w, h) = barcode.rect #
barcodeData = barcode.data.decode("utf-8")
barcodeType = barcode.type
- zbarlight
需要将numpy转换为PIL格式。
import zbarlight
from PIL import Image
img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
codes = zbarlight.scan_codes(['qrcode'], img)
- zxing
识别效果最好。
貌似需要将图像存储到本地,且不可以使用绝对路径。未详细测试,仅简单使用。
import zxing
reader = zxing.BarCodeReader()
barcode = reader.decode('decode.jpg')