from pyzbar import pyzbar
import winsound
# 打开摄像头
cap=cv2.VideoCapture(0)
# 设置窗口名和窗口大小
cv2.namedWindow(‘Scan QR Code’, cv2.WINDOW_NORMAL)
cv2.resizeWindow(‘Scan QR Code’, 800, 600)
# 创建声音提示函数
def beep():
frequency=2500
duration=1000
winsound.Beep(frequency, duration)
while True:
# 读取摄像头画面
_, frame=cap.read()
# 转换为灰度图像
gray=cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 检测二维码
barcodes=pyzbar.decode(gray)
# 遍历所有检测到的二维码
for barcode in barcodes:
# 提取二维码的边界框坐标
(x, y, w, h)=barcode.rect
# 在图像中绘制二维码的边界框和文本
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 0, 255), 2)
cv2.putText(frame, barcode.data.decode(‘utf-8’), (x, y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
# 发出声音提示
beep()
# 输出扫描到的二维码内容
print(barcode.data.decode(‘utf-8’))
# 显示图像
cv2.imshow(‘Scan QR Code’, frame)
# 按下ESC键退出程序
if cv2.waitKey(1)==27:
break
# 释放摄像头资源
cap.release()
# 关闭所有窗口
cv2.destroyAllWindows()