Используется OpenCV
для порогового значения изображения как черно-белого, тогда pyzbar
может декодировать QR-код.
Во-первых, пороговое изображение с кодом ниже.
from pyzbar import pyzbar
import argparse
import numpy as np
import cv2
image =cv2.imread("QRCode.png")
# thresholds image to white in back then invert it to black in white
# try to just the BGR values of inRange to get the best result
mask = cv2.inRange(image,(0,0,0),(200,200,200))
thresholded = cv2.cvtColor(mask,cv2.COLOR_GRAY2BGR)
inverted = 255-thresholded # black-in-white
Ниже приведены обработанные изображения.
С
barcodes = pyzbar.decode(inverted)
print (barcodes)
Распечатка показала, что декодированный тип - QRCODE
, а данные - GOAL
.
[Decoded(data='GOAL', type='QRCODE', rect=Rect(left=5, top=13, width=228, height=212),
polygon=[Point(x=5, y=222), Point(x=233, y=225), Point(x=220, y=19), Point(x=13, y=13)])]
Надеюсь, эта помощь.