OpenCVでQRコードをデコードできることを知る
画像を扱うときに使うOpenCVはQRコードのデコードもできる。
import cv2
import qrcode
def decode_qrcodes(img, index=None):
if type(img) is str: img = cv2.imread(img)
qr = cv2.QRCodeDetector()
(res, data, points, qrcodes) = qr.detectAndDecodeMulti(img)
if res is False:
print('[WARN] Decoding failed.')
return None
if type(index) is int:
if index in range(len(data)): return data[index]
print('[WARN] The index is out of the range.')
return None
return data
# qrcode.constants.ERROR_CORRECT_L = 1, M = 0, Q = 3, H = 2
def create_qrcode(data, error_correction=0, box_size=2, border=2, path=None):
img = qrcode.make(data, error_correction=error_correction, box_size=box_size, border=border)
if path is not None: img.save(str(path))
return img
file_name = 'test_qrcode.png'
img = create_qrcode('意識が\n遠のくほど\n暑い夏', path=file_name)
#img.save(file_name)
data = decode_qrcodes(file_name)
print(data)
便利だ。
2020/08/15 14:32