使用Python制作一个二维码验证的工具

制作一个二维码验证的工具,调用摄像头
假设文件myDataFile.text存放了会议人员信息,每人人安排了一个二维码,通过相机安检进入,编写程序,
在摄像头捕获的图像中,程序会尝试识别二维码并读取二维码的内容并与从文件中读取内容进行比对,然后在图像上标记出是否授权

Python代码

#使用pyzbar库扫描摄像头捕获的图像中的二维码。
#使用 OpenCV 实现了从摄像头读取图像、显示图像、绘制多边形和文字等功能。
#使用 NumPy 用于处理图像数据和多边形的坐标。
import cv2
import numpy as np
from pyzbar.pyzbar import decode


cap = cv2.VideoCapture(0)#打开摄像头(打开默认摄像头(通常是内置摄像头)。)
cap.set(3,640)#摄像头设置:打开默认摄像头(通常是内置摄像头)。设置摄像头的宽度和高度为640x480。
cap.set(4,480)#
print("打开调用摄像头")
with open('myDataFile.txt', encoding='utf-8') as f:#mydatafile.txt修改为本机路径并且输入类容
 #获取每一行成一个列表,相当于myDataList = [line.strip() for line in f.readlines()]
  myDataList = f.read().splitlines()
  #myDataList = [line.strip() for line in f]

print(myDataList)
while True:

  success, img = cap.read()
  for barcode in decode(img):
     myData = barcode.data.decode('utf-8')
     print("二维码识别成功")
     print("识别出二维码的myData:", repr(myData))  # 打印解码后的二维码数据
     print("读取的列表中的myDataList:", myDataList)#txt文档中的信息
     if myData in myDataList:#如果myData在myDataList中,则执行以下代码块
        myOutput = 'Authorized'#将 myOutput 设置为 'Authorized' 表示授权,同时将颜色设置为绿色
        #print("在列表中")
        myColor = (0,255,0)
     else:# 如果myData不在myDataList中,则执行以下代码块
        myOutput = 'Un-Authorized'#将 myOutput 设置为 'Un-Authorized' 表示未授权,同时将颜色设置为红色。
        myColor = (0, 0, 255)#

     pts = np.array([barcode.polygon],np.int32)
     pts = pts.reshape((-1,1,2))
     cv2.polylines(img,[pts],True,myColor,5)
     pts2 = barcode.rect
     cv2.putText(img,myOutput,(pts2[0],pts2[1]),cv2.FONT_HERSHEY_SIMPLEX, 0.9,myColor,2)
  print("正在运行识别")
  cv2.imshow('Result',img)
  cv2.waitKey(1)

二维码制作网站

https://zh.qr-code-generator.com/
在这里插入图片描述

text的文档内容

在这里插入图片描述

运行代码识别摄像头的内容

二维码内容是列表中内容
在这里插入图片描述
二维码不是列表中的内容

在这里插入图片描述
会一直运行
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值