qr= qrcode.QRCode(version=1, box_size=10, border=4, error_correction=qrcode.constants.ERROR_CORRECT_H)
我们对参数做一个解释:
·version参数是一个从 1 到 40 的整数,控制二维码的大小;最小的是版本 1,它是一个 21x21 矩阵。
· box_size参数控制二维码每个方框的像素数。
· border控制框边框的粗细。
· error_correction控制用于 QR 码的纠错,特别是当 QR 码因错误而无法读取时。选项 error_correction包括:
· ERROR_CORRECT_L:可以纠正大约 7% 或更少的错误
· ERROR_CORRECT_M(默认):可以纠正大约 15% 或更少的错误。
· ERROR_CORRECT_Q:可以纠正大约 25% 或更少的错误。
· ERROR_CORRECT_H:可以纠正大约 30% 或更少的错误。
qr.add_data(data)
qr.make(fit=True)
最后,使用生成二维码make_image()将 QRCode 对象转换为图像文件并保存在文件中。
qr_img=qr.make_image(fill_color="black", back_color="white")
qr_img.save("qr.jpg")
其中,fill_color和back_color可以改变二维码的背景和绘画颜色。
阅读二维码
本篇我们将讲解两种不同的方式来读取二维码,使用cv2和pyzbar。
opencv 读取解码
导入库。
import cv2
打开上方存储的qr.jpg图像文件。
cv_img= cv2.imread("qr.jpg")
在 CV2 中创建类 QRCodeDetector 的对象。
qr_detect= cv2.QRCodeDetector()
data, bbox, st_qrcode= qr_detect.detectAndDecode(cv_img)
detectAndDecode()检测并解码图像中存在的二维码。该方法返回以下内容:
·解码后的数据,如果没有找到二维码,则数据为空。
· 包含检测到的二维码顶点的边界框。
· 可选的包含经过校正和二值化的 QR 码的输出图像。
print(f"QRCode data:\n{data}")
我们对参数做一个解释:
·version参数是一个从 1 到 40 的整数,控制二维码的大小;最小的是版本 1,它是一个 21x21 矩阵。
· box_size参数控制二维码每个方框的像素数。
· border控制框边框的粗细。
· error_correction控制用于 QR 码的纠错,特别是当 QR 码因错误而无法读取时。选项 error_correction包括:
· ERROR_CORRECT_L:可以纠正大约 7% 或更少的错误
· ERROR_CORRECT_M(默认):可以纠正大约 15% 或更少的错误。
· ERROR_CORRECT_Q:可以纠正大约 25% 或更少的错误。
· ERROR_CORRECT_H:可以纠正大约 30% 或更少的错误。
qr.add_data(data)
qr.make(fit=True)
最后,使用生成二维码make_image()将 QRCode 对象转换为图像文件并保存在文件中。
qr_img=qr.make_image(fill_color="black", back_color="white")
qr_img.save("qr.jpg")
其中,fill_color和back_color可以改变二维码的背景和绘画颜色。
阅读二维码
本篇我们将讲解两种不同的方式来读取二维码,使用cv2和pyzbar。
opencv 读取解码
导入库。
import cv2
打开上方存储的qr.jpg图像文件。
cv_img= cv2.imread("qr.jpg")
在 CV2 中创建类 QRCodeDetector 的对象。
qr_detect= cv2.QRCodeDetector()
data, bbox, st_qrcode= qr_detect.detectAndDecode(cv_img)
detectAndDecode()检测并解码图像中存在的二维码。该方法返回以下内容:
·解码后的数据,如果没有找到二维码,则数据为空。
· 包含检测到的二维码顶点的边界框。
· 可选的包含经过校正和二值化的 QR 码的输出图像。
print(f"QRCode data:\n{data}")