轻松测试二维码生成与识别:使用Python的qrcode、opencv和pyzbar库
二维码生成与识别测试方法
安装必要的Python库
在开始之前,确保已安装以下库:
qrcode
:用于生成二维码opencv-python
:用于图像处理和摄像头捕获pyzbar
:用于解码二维码
pip install qrcode opencv-python pyzbar
生成二维码
使用qrcode
库可以快速生成二维码图片。以下代码生成一个包含指定文本的二维码并保存为qrcode.png
:
import qrcodedata = "https://example.com" # 替换为需要编码的内容
qr = qrcode.QRCode(version=1, box_size=10, border=5)
qr.add_data(data)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
img.save("qrcode.png")
从图片文件识别二维码
使用pyzbar
和opencv
可以解码二维码图片:
import cv2
from pyzbar.pyzbar import decodeimage = cv2.imread("qrcode.png")
decoded_objects = decode(image)
for obj in decoded_objects:print("Data:", obj.data.decode("utf-8"))
实时摄像头识别二维码
通过摄像头实时捕获并识别二维码:
cap = cv2.VideoCapture(0)
while True:_, frame = cap.read()decoded_objects = decode(frame)for obj in decoded_objects:print("Data:", obj.data.decode("utf-8"))# 在图像上绘制二维码边界points = obj.polygonif len(points) > 4:hull = cv2.convexHull(np.array([point for point in points], dtype=np.float32))cv2.polylines(frame, [hull], True, (0, 255, 0), 2)else:cv2.polylines(frame, [np.array(points)], True, (0, 255, 0), 2)cv2.imshow("QR Code Scanner", frame)if cv2.waitKey(1) == ord("q"):breakcap.release()
cv2.destroyAllWindows()
自定义二维码参数
qrcode
库支持多种自定义参数:
version
:控制二维码大小(1-40)error_correction
:设置纠错级别(qrcode.constants.ERROR_CORRECT_L
等)box_size
:每个模块的像素数border
:边框的模块数
qr = qrcode.QRCode(version=2,error_correction=qrcode.constants.ERROR_CORRECT_H,box_size=8,border=4,
)
处理识别中的常见问题
- 图像模糊时,尝试调整摄像头焦距或使用
cv2.GaussianBlur
预处理 - 低光照条件下,使用
cv2.equalizeHist
增强对比度 - 对于小二维码,使用
cv2.resize
放大图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
_, threshold = cv2.threshold(blurred, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
欢迎点赞评论,指出不足,笔者由衷感谢!~