提问者:小点点

基于python和opencv的大数据量QR码检测


Hello guyz,我正在做一个项目,其中我需要检测图像中的二维码,并解码其数据。 目前,我正在使用open cv及其工作的QR码与更多的数据量,而不是在QR码上,这是使用哈希作为数据生成的。 二维码示例:

我的代码正在完美地检测小数据QR码,但在大数据QR上不太相似小数据=“Hello”大数据=“62F67621B020CBB6897AD7E7BA1D54581AA9F1571189E40F8F5C34AA5489B6E4”

检测代码如下:

import cv2
import numpy as np


img = data_uri_to_cv2_img(values['image'])  #function used to convert Base64 data to image

detector = cv2.QRCodeDetector()
data, bbox, straight_qrcode = detector.detectAndDecode(img)

def data_uri_to_cv2_img(uri):
    encoded_data = uri.split(',')[1]
    nparr = np.fromstring(base64.b64decode(encoded_data), np.uint8)
    img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
    return img

共1个答案

匿名用户

也许库pyzbar更适合您。 我测试了一下,两张照片都能用。

from pyzbar import pyzbar
import cv2

pyzbar.decode(cv2.imread('largeqr.jpg'))
[Decoded(data=b'hello', type='QRCODE', rect=Rect(left=1442, top=641, width=357, 
    height=356), polygon=[Point(x=1442, y=641), Point(x=1442, y=997), Point(x=1799, 
    y=997), Point(x=1797, y=641)])]

正如你所看到的,它还给出了二维码4个角的坐标。