#导库,而 pyzbar 是通过 Python2和3接口,使用 ZBar 库读取一维条形码和QR码
import cv2
import numpy as np
from pyzbar.pyzbar import decode
#打开摄像头
#img = cv2.imread('1.png')
cap = cv2.VideoCapture(0)
#设置窗口大小
cap.set(3,640)
cap.set(4,480)
#按行打开权限文件
with open('myDataFile.text') as f:
myDataList = f.read().splitlines()
#循环读取
while True:
#返回视频的下一帧
success, img = cap.read()
#循环读取二维码
for barcode in decode(img):
#设置编码格式,读取二维码数据
myData = barcode.data.decode('utf-8')
print(myData)
#如果读取的数据在权限文件中,则有权限,并把颜色设置为绿色;否则,显示无权限,颜色设置红色
if myData in myDataList:
myOutput = 'Authorized'
myColor = (0,255,0)
else:
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)
cv2.imshow('Result',img)
cv2.waitKey(1)
需要自己创建一个权限文件,权限文件有扫描二维码的信息,则显示有权限。
参考:https://www.bilibili.com/video/BV18B4y1c7r4/?p=5&vd_source=8073a87adf278a421274df509a29a81a