Lý thuyết


QR-Code, viết tắt của Quick response code hay còn gọi là mã vạch ma trận (matrix-barcode) là dạng mã vạch hai chiều (2D) có thể được đọc bởi một máy đọc mã vạch hay smartphone (điện thoại thông minh) có chức năng chụp ảnh (camera) với ứng dụng chuyên biệt để quét mã vạch.

Cài đặt thư viện

conda install conda-forge::qrcode

11.1. Tạo mã QR Code

Thử dùng đường dẫn https://hano.cf để tạo QR Code.

# import thư viện
import cv2
import qrcode

# nhập nội dung cần mã hóa QR
my_url = "<https://hano.cf>"

# cấu hình thông số code QR
qr = qrcode.QRCode(version=1, box_size=10, border=5)
qr.add_data(my_url)
qr.make(fit=True)

# tạo code QR
img = qr.make_image(fill='black', back_color='white')

# save mã QR ra thành file
img.save("qr_code.png")

# load ảnh QR code
img_qr = cv2.imread("qr_code.png")

# show code qr
cv2.imshow("QR Code", img_qr)

# chờ nhấn phím rồi thoát
cv2.waitKey(0)
cv2.destroyAllWindows()

Trong đó:

image.png

11.2. Đọc mã QR Code

Để thực hiện "giải mã", chúng ta cần phải dùng thư viện PIL để thực hiện việc đọc ảnh

Untitled

# import thư viện
import cv2
import qrcode

# đọc file ảnh chứa qr code
img = cv2.imread("qr_code.png")

# show code qr
cv2.imshow("QR Code", img)

# gọi bộ giải mã qr code
detector=cv2.QRCodeDetector()

# giải mã qr code
val,b,c=detector.detectAndDecode(img)

# in ra nội dung qr code
print(val)

# chờ nhấn phím rồi thoát
cv2.waitKey(0)
cv2.destroyAllWindows()