使用 OpenCV 或 Pyzbar 读取二维码的问题

问题描述 投票:0回答:2

老实说,我正在尝试使用 Python 或任何其他语言解码 QR 码。我也熟悉 Javascript 或 PHP,但 Python 似乎是最适合这项任务的。

这是我为一个小挑战而编写的更大代码的一部分。我需要从二维码中提取密码。我试过在我的手机上使用二维码阅读器,我可以得到密码,所以我可以确认二维码本身没有问题。

这是二维码:

要检索的字符串是“密钥是/qrcod_OMevpf”。

到目前为止,我已经尝试使用两个不同的 python 库。打开CV和Pyzbar,代码如下:

OpenCV

    image = cv2.imread(imgAbsolutePath)
    qrCodeDetector = cv2.QRCodeDetector()
    decodedText, points, _ = qrCodeDetector.detectAndDecode(image)
    if points is not None:
    # QR Code detected handling code
        print("QR code detected")
        print(decodedText)    
    
    else:
        print("QR code not detected")

打印“检测到二维码”,然后是一个空字符串。

Pyzbar

qr = decode(Image.open('result.png'), symbols=[ZBarSymbol.QRCODE])
print(qr)

打印“[]”

你知道为什么这些库不起作用吗?或者你能推荐任何其他有用的库吗? 谢谢

python opencv qr-code zbar
2个回答
0
投票

我终于用 zxing 让它工作了:

from zxing import BarCodeReader

def decode_qr_code(image_path):
    reader = BarCodeReader()
    barcode = reader.decode(image_path)
    return barcode.parsed

qr_code = decode_qr_code("result.png")
print(qr_code)

0
投票

二维码数据好像翻转了,试试这个:

image = cv2.imread(imgAbsolutePath)
mirrored_image = cv2.flip(image, 1)   // mirror flip
qrCodeDetector = cv2.QRCodeDetector()
decodedText, points, _ = qrCodeDetector.detectAndDecode(mirrored_image)
if points is not None:
# QR Code detected handling code
    print("QR code detected")
    print(decodedText)    

else:
    print("QR code not detected")

注意:目前有人正在修复 OpenCV。

© www.soinside.com 2019 - 2024. All rights reserved.