Home > Back-end >  OpenCV QRDetector read nothing but detect the QR
OpenCV QRDetector read nothing but detect the QR

Time:06-08

I am trying to decode QR. Sometimes picture can be read well, but very often I got empty data back even if QR code was detected (points). Here is the app:

import cv2
# Name of the QR Code Image file
filename = "D:/......./QR_1229444659.jpg"
image = cv2.imread(filename)
detector = cv2.QRCodeDetector()
data, vertices_array, binary_qrcode = detector.detectAndDecode(image)
if vertices_array is not None:
    print(f"QRCode data: {data}")
else:
  print("There was some error")

Here is the QR what I am trying to read: QR Code

it shows empty data back but definately see the QR code as points data are: QRCode data:

[[[132.      524.     ]
  [557.0844  513.29724]
  [550.      908.     ]
  [155.88225 920.6455 ]]]

In that example binary_qrcode is None. is there any special option to let cv2 recognize the data? Probably there is an alternative to that QR decoder? Would appreciate your recommendations.

CodePudding user response:

Consider using Pyzbar which is more robust and faster than using cv2.

You can install it following the instructions from here

Installation:

pip install pyzbar

Code:

from pyzbar.pyzbar import decode


image = cv2.imread(filename, 0)

barcodes = decode(image)
print(barcodes)

It prints:

[Decoded(data=b'https://energo.onelink.me/gTTu/ENGH081912680001?af_qr=true', type='QRCODE', rect=Rect(left=134, top=515, width=420, height=402), polygon=[Point(x=134, y=525), Point(x=158, y=917), Point(x=547, y=905), Point(x=554, y=515)], quality=1, orientation='UP')]
  • Related