Opencv学习项目6——pyzbar

在之前我们学习了解码图片中的二维码,这次我们开启摄像头来解码视频中二维码

开启摄像头

# 打开摄像头
cap = cv2.VideoCapture(0)
cap.set(3, 640)  # 设置摄像头画面宽度
cap.set(4, 480)  # 设置摄像头画面高度

我使用的是笔记本上的摄像头来进行的,如果你们使用其他摄像头,可以根据需要调整

读取授权数据

首先我们要先创建一个授权文件,如mydata.txt,在里面写入我们授权的数据,如Armitage,这样在我们后面读取到二维码时,可以根据数据来进行不同的操作

# 从文件中读取授权数据
with open('mydata.txt') as f:mydataList = f.read().splitlines()
print("Authorized data loaded:", mydataList)

 使用 read().splitlines() 方法读取其中的数据,以列表形式存储在 mydataList 变量中

授权判断

# 判断二维码数据是否在授权列表中if mydata in mydataList:myout = 'Authorized'mycolor = (0, 255, 0)  # 绿色表示授权else:myout = 'Un-Authorized'mycolor = (0, 0, 255)  # 红色表示未授权

检查 mydata 是否在 mydataList 中,确定是否为授权数据,并相应地设置显示文本和矩形框颜色。

代码实现

import cv2
from pyzbar.pyzbar import  decodecap = cv2.VideoCapture(0)
cap.set(3,640)
cap.set(4,320)with open('mydata.txt') as f:mydataList = f.read().splitlines()
print("Authorized data loaded:", mydataList)while True:# 读取摄像头图像success, img = cap.read()# 解码图像中的二维码for barcode in decode(img):mydata = barcode.data.decode()print("Decoded data:",mydata)# 判断是否为授权数据if mydata in mydataList:myout = 'Authorized'mycolor = (0,255,0)else:myout = 'Un-Authorized'mycolor = (0, 0, 255)# 获取条形码的矩形边界rect = barcode.rect# 绘制矩形边界框cv2.rectangle(img, (rect.left, rect.top), (rect.left + rect.width, rect.top + rect.height),mycolor, 3)cv2.putText(img, mydata, (rect.left, rect.top +180), cv2.FONT_HERSHEY_COMPLEX, 0.8, mycolor, 2)cv2.putText(img, myout, (rect.left,rect.top  - 10), cv2.FONT_HERSHEY_COMPLEX,0.8, mycolor, 2)cv2.imshow('Result', img)# 检测按键事件,按下 q 键退出循环if cv2.waitKey(1) & 0xFF == ord('q'):break
# 释放资源
cap.release()
cv2.destroyAllWindows()

效果实现

 这样就完成了检测QR码是否在授权文件中,有兴趣的可以关注一下,谢谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/35019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openGauss学习笔记-304 openGauss AI特性-AI4DB数据库自治运维-ABO优化器-智能基数估计

文章目录 openGauss学习笔记-304 openGauss AI特性-AI4DB数据库自治运维-ABO优化器-智能基数估计304.1 概述304.2 前置条件304.3 使用指导304.4 最佳实践304.5 常见问题处理openGauss学习笔记-304 openGauss AI特性-AI4DB数据库自治运维-ABO优化器-智能基数估计 304.1 概述 智…

通过systemctl启停tomcat

目录 目的.service配置文件的结构介绍实验步骤1. 安装java2. 二进制安装tomcat3. 编写/usr/systemd/system/tomcat.service文件4. 测试启动关闭 目的 通过二进制安装的tomcat,只能通过tomcat文件目录下的.sh脚本进行启停。 而我们一般使用的服务,是通过…

《数字图像处理》实验报告四

一、实验任务与要求 对 Fig0403.tif 进行傅里叶变换并显示其频谱图像;fft2(x) 对 Fig0405.tif 图像进行填充和非填充的高斯滤波,并观察其不同;paddedsize,fft2(x,m,n) 由 sobel 空间滤波算子生成相应的频率…

多链代币开发:打造跨链互操作性的新纪元

随着区块链技术的迅猛发展,数字资产和加密货币市场也在不断扩大。各大区块链平台如以太坊、币安智能链、波卡、Solana等,均展现出其独特的优势和广泛的应用场景。然而,这些链之间的孤立性和互操作性问题,限制了数字资产的流动性和…

突破架构瓶颈:克服软件系统中的漂移和侵蚀

一种常见但不完美的比喻是将软件系统中的架构漂移和侵蚀与物理建筑的架构相比。虽然这个比喻很直观,但它存在一个根本性的误解,这也常常引发软件开发中的架构问题。 试想一下,一个设计良好的摩天大楼或房屋建成后,我们期望它基本保…

Linux下的信号使用总结

主要参考《【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.4》信号篇 发送给进程的诸多信号中,大多数都是来自于内核。 信号本质上是 int 类型的数字编号,这就好比硬件中断所对应的中断号。内核针对每个信号,都给其定义了一个唯一的整数编号…

docker 容器设置中文环境

1.容器中安装和设置 1.1.进入容器查看已有语言包 locale -a 默认情况下: 1.2 安装中文语言环境 如果没有zh_CN.utf8就安装。 方式1: #直接安装中文语言包 apt-get install -y language-pack-zh-hans 方式2: #安装中文语言环境 apt-g…

线性和二次判别分析

线性判别分析 线性判别分析(Linear Discriminant Analysis,LDA)亦称 Fisher 判别分析。其基本思想是:将训练样本投影到低维超平面上,使得同类的样例尽可能近,不同类的样例尽可能远。在对新样本进行分类时&…

达梦数据库的系统视图v$lock

达梦数据库的系统视图v$lock 在达梦数据库(DM)中,V$LOCK 系统视图用于查看当前数据库中的锁定状态。该视图提供了关于所有锁定详细信息,例如锁的内存地址、所属事务 ID,锁类型和锁模式等。这对于数据库管理员进行锁定…

国产数据库 - 内核特性 - CloudberryDB中的Runtime Filter

国产数据库 - 内核特性 - CloudberryDB中的Runtime Filter 今年5月份GreenPlum官方将GitHub仓库代码全部删除,各个分支的issues和bugs讨论等信息全部清除,仅将master分支代码进行归档。对于国内应用GPDB的用户来说,这是一个挑战性事件&#x…

开发网页版加密访问文档

开发一个支持加密访问文档的网页版应用程序涉及多个步骤,包括用户认证、文档加密和解密、文件上传和下载,以及确保整个过程中的数据安全性。下面是一个详细的步骤指南: 步骤1:设置项目环境 首先,设置一个新的项目环境…

函数调用,递归技巧之取反

递归指的是在解决问题的过程中,将问题分解为同类的子问题而解决问题的方法。在程序中通常体现为函数调用自身的方式。 比如是双方回合制对战的游戏进行结算,可以使用一个变量bool类型来完成一回合双方互相战斗并且攻击方同时会作为受攻击方的结算。在递归…

Vue跨标签页数据通信

跨标签页数据通信 在同一浏览器项目地址处于不同的标签页中,建立两个页面间的数据通信,即:B页面新增/修改数据;A页面表格自动更新数据 跨标签页通信常见方案: BroadCast Channel (广播频道) Service Worker LocalStorage Window.onstorage监听 Shared…

English note 1

It was right that I decided not to buy new course before. A few days ago, the after-sales staff of this software announced that all the courses of this software would be taken down. 之前决定不继续买新的课程是对的。几天前,这个软件的售后人员就宣布…

Zookeeper 三、Zookeeper基本使用

1.Zookeeper系统模型 1)Zookeeper数据模型之ZNode 在Zookeeper中,数据信息被保存在一个个数据节点上,这些节点被称为ZNode。ZNode是Zookeeper中最小数据单位,在ZNode下面又可以再挂ZNode,这样一层层下去就形成了一个…

Reactor模型:网络线程模型演进

一,阻塞IO线程池模型(BIO) 这是传统的网络编程方案所采用的线程模型。 即有一个主循环,socket.accept阻塞等待,当建立连接后,创建新的线程/从线程池中取一个,把该socket连接交由新线程全权处理。…

【机器参数】安装适合的nvidia驱动

背景:我现在nvidia-smi没有显示,我的目标是让nvidia-smi正常显示 参考: nchttps://www.cnblogs.com/carle-09/p/11504544.html 可能是驱动版本不对,所以我重新去nvidia官网下载了驱动。 Official Drivers | NVIDIA 得到了NVID…

discuz迪恩cul!教育课程培训网站模板

Discuz x3.2模板 迪恩cul!教育课程培训 GBK,程序包中内附详细的安装教程,下载后按照教程安装即可 discuz迪恩cul!教育课程培训网站模板

如何将本地的Django项目部署到阿里云服务器上?

场景:在本地的pycharm上已经写好了一个Django架构的网站,现在要把它放到公网上 一、阿里云服务器 选择云服务器ECS,新用户可以免费使用三个月 购买时选择预装宝塔面板 买好后,进入云服务器控制台 重置实例密码 远程连接至服务…

python-17-零基础自学python-

学习内容:《python编程:从入门到实践》第二版 知识点: 类、子类、继承、调用函数 练习内容: 练习9-6:冰激凌小店 冰激凌小店是一种特殊的餐馆。编写一个名为IceCreamStand的类,让它继承为完成练习9-1或…