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
也许库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个角的坐标。