OpenCV Python 版使用教程(二)摄像头调用
文章目录
- 一、上篇回顾
- 二、使用步骤
- 1. 调用摄像头的 API 介绍
- 2. 代码示例
- 3. 代码分析
- 三、下篇预告
一、上篇回顾
在上一篇中,简单介绍了如何在 Windows 和 Ubuntu 两个环境下部署和安装 OpenCV,从本篇开始将逐步介绍 OpenCV 中的常见操作。
本篇介绍 OpenCV 和摄像头的相关操作。
二、使用步骤
1. 调用摄像头的 API 介绍
OpenCV 调用摄像头使用 cv2.VideoCapture ,API 如下:
cv::VideoCapture::VideoCapture()
cv::VideoCapture::VideoCapture(const String& filename)
cv::VideoCapture::VideoCapture(const String& filename, int apiPreference)
cv::VideoCapture::VideoCapture(int index)
cv::VideoCapture::VideoCapture(int index, int apiPreference)
从 API 中可以看出,OpenCV 的 VideoCapture 对象可以用 摄像头或者一个视频文件作为输入流,apiPreference 则指定了图像视频流处理的 API,这些 API 以 CAP_ 开头。
2. 代码示例
在编辑器中输入以下内容:
import cv2cap = cv2.VideoCapture(0)while True:ret, frame = cap.read()if not ret:print("摄像头无法打开!")breakcv2.imshow("Capture", frame)if cv2.waitKey(0) == ord('q'):breakcv2.destroyAllWindows()
如果运行正常,那么应该能看到摄像头的画面内容。
3. 代码分析
cap = cv2.VideoCapture(0)
这里,0 指的是摄像头的位置,如果只有一个摄像头,一般来说都是 0,而如果有多个摄像头,则可以通过更改编号来切换摄像头,笔记本电脑自带的摄像头也是 0。
ret, frame = cap.read()
cap.read() 用于从视频流中读取一帧,函数返回两个参数,ret 是 bool 类型,用于判断是否成功读取视频帧,frame 是 np.ndarray 类型,是一个数组,用于记录摄像头的信息。
cv2.imshow("Capture", frame)
imshow 函数用于显示画面,使用方法如下:
void cv::imshow(const String& winname, InputArray mat)
第一个参数是窗口名称,第二个参数是要显示的图像,也就是前面的 frame。
if cv2.waitKey(0) == ord('q'):break
waitKey 函数用于接收键盘输入,注意 只有在窗口中按下按键才有用,在终端或者其他地方无效。
int cv::waitKey(int delay = 0)
- delay < 0: 立即返回结果,不等待用户输入
- delay = 0: 无限期等待直到用户输入
- delay > 0: 等待指定时间 (ms) 后返回输入的内容。
返回的内容为 ASCII 值,因此需要进行转换,Python 中的 ord 函数可以将字符转换为 ASCII 值。
三、下篇预告
本篇简单介绍了 OpenCV 中 摄像头读取的相关操作。在摄像头读取时,可能会出现画面延迟,导致读取到的往往不是最新的画面,下期将介绍解决方法。
相关文章:
OpenCV Python 版使用教程(二)摄像头调用
文章目录 一、上篇回顾二、使用步骤1. 调用摄像头的 API 介绍2. 代码示例3. 代码分析 三、下篇预告 一、上篇回顾 在上一篇中,简单介绍了如何在 Windows 和 Ubuntu 两个环境下部署和安装 OpenCV,从本篇开始将逐步介绍 OpenCV 中的常见操作。 本篇介绍 …...
基础算法——排序算法(冒泡排序,选择排序,堆排序,插入排序,希尔排序,归并排序,快速排序,计数排序,桶排序,基数排序,Java排序)
1.概述 比较排序算法 算法最好最坏平均空间稳定思想注意事项冒泡O(n)O( n 2 n^2 n2)O( n 2 n^2 n2)O(1)Y比较最好情况需要额外判断选择O( n 2 n^2 n2)O( n 2 n^2 n2)O( n 2 n^2 n2)O(1)N比较交换次数一般少于冒泡堆O( n l o g n nlogn nlogn)O( n l o g n nlogn nlogn)O( n l…...
几种常见的处理ARP欺骗的方法:静态ARP表和VLAN等
ARP(Address Resolution Protocol)欺骗是一种常见的网络攻击手段,攻击者通过伪造ARP响应,将网关的MAC地址指向攻击者的MAC地址,从而截获或篡改网络流量。为了应对ARP欺骗攻击,现代网络设备和管理员采取了一…...
突破1200°C高温性能极限!北京科技大学用机器学习合成24种耐火高熵合金,室温延展性极佳
在工程应用中,如燃气轮机、核反应堆和航空推进系统,对具备优异高温机械性能的金属合金需求十分旺盛。由于材料熔点的固有限制,传统镍基 (Ni) 高温合金的耐温能力已接近极限。为满足开发高温结构材料的需求,耐火高熵合金 (RHEAs) 于…...
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源 或者超时失效
数据治理过程中,有字段长度不够,扩展字段,报:ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源 或者超时失效 ALTER TABLE LAPD_RSJ_CXJMYLBXCBXX MODIFY HKXZ VARCHAR2(10);错误表示当前会话在试图访问的资源(通常…...
Python学习笔记-断点操作结合异常处理
在编程中,调试和错误处理是提升代码质量和开发效率的关键环节。调试能帮助识别并修复问题,异常处理则使得程序能在出现错误时有效地管理而不至于崩溃。断点与异常处理的结合应用是高级编程中不可或缺的技巧,能够帮助更高效地定位问题,提高程序的鲁棒性。 本文将通过详细的…...
Java实现JWT登录认证
文章目录 什么是JWT?为什么需要令牌?如何实现?添加依赖:JwtUtils.java(生成、解析Token的工具类)jwt配置:登录业务逻辑:其他关联代码:测试: 什么是JWT? JWT(Json Web Token&…...
「Mac畅玩鸿蒙与硬件20」鸿蒙UI组件篇10 - Canvas 组件自定义绘图
Canvas 组件在鸿蒙应用中用于绘制自定义图形,提供丰富的绘制功能和灵活的定制能力。通过 Canvas,可以创建矩形、圆形、路径、文本等基础图形,为鸿蒙应用增添个性化的视觉效果。本篇将介绍 Canvas 组件的基础操作,涵盖绘制矩形、圆…...
山东路远生态科技有限公司竣工投产仪式暨产品发布会圆满举行
第二十届三中全会于2024年7月15日至18日在北京举行。全会审议通过了《关于进一步全面深化改革、推进中国式现代化的决定》。其中提到,“要健全因地制宜发展新质生产力体制机制”。 新质生产力是由技术革命性突破、生产要素创新性配置、产业深度转型升级而催生的当代先进生产力…...
java: 题目:银行账户管理系统
题目:银行账户管理系统 设计一个简单的银行账户管理系统。要求实现以下功能: 1. 创建一个银行账户 BankAccount 类,该类具有以下属性:accountNumber(账户号码,类型为 String) balanceÿ…...
PH热榜 | 2024-11-06
DevNow 是一个精简的开源技术博客项目模版,支持 Vercel 一键部署,支持评论、搜索等功能,欢迎大家体验。 Github:https://github.com/LaughingZhu/DevNow 1. MindOne Builder 标语:这是一个“设计优先”的应用构建工具…...
五、Java并发 Java Google Guava 实现
Guava 是托管在 Github.com 上的流行的 Google 开源的 Java 线程池库。 Guava 包含了许多有用的并发类,同时还包含了几个方便的 ExecutorService 实现,但这些实现类都无法通过直接实例化或子类化来创建实例。取而代之的是提供了 MoreExecutors 助手类来…...
ssm公交车信息管理系统+vue
系统包含:源码论文 所用技术:SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习,获取源码看文章最下面 需要定制看文章最下面 目 录 摘要 I Abstract II 第1章 绪 论 1 1.1 研究背景 1 1.2 研究意义 1 1.3 国内外研究现状 …...
如何删除react项目的默认图标,使在浏览器中不显示默认图标favicon.ico
要删除 React 项目的默认图标,使在浏览器中不显示默认图标favicon.ico,其实有两种方法: 方法一 方法要点:删除掉 public 目录下的 favicon.ico 文件,再用浏览器访问时,如果加载不到图标文件,就…...
【React】react-app-env.d.ts 文件
在使用 create-react-app 生成的 TypeScript 项目模板中,react-app-env.d.ts 文件的作用是为 React 应用中的全局变量和类型进行声明。 全局类型声明:react-app-env.d.ts 文件会引入 react-scripts 提供的全局类型定义,这些类型定义扩展了 Ty…...
设计模式讲解01-建造者模式(Builder)
1. 概述 建造者模式也称为:生成器模式 定义:建造者模式是一种创建型设计模式,它允许你将创建复杂对象的步骤与表示方式相分离。 解释:建造者模式就是将复杂对象的创建过程拆分成多个简单对象的创建过程,并将这些简单…...
wflow-web:开源啦 ,高仿钉钉、飞书、企业微信的审批流程设计器,轻松打造属于你的工作流设计器
嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 wflow-web是一个开源的工作流设计器,它支持可视化拖拽表单组件,动态任意层级结构审批节点,以及复杂流程条件的设置…...
Promise 简单介绍及深入挖掘
一、什么是 Promise? 在 JavaScript 中,Promise 是用于处理异步操作的一种方式。它代表了一个 可能 在将来某个时间点完成或失败的操作的结果。Promise 使得我们能够优雅地处理异步代码,避免了回调地狱(Callback Hell)…...
103 - Lecture 1
Introduction to Database 一、Introduction to Database Systems 1. 数据的定义 What is Data? EX: data could be a docx file storing your project status report; data could be a spreadsheet containing information • 数据只有在设计的场景中才有意义。ÿ…...
Ubuntu 20.04禁用或者移除 cloud-init
1、禁用cloud-init 这是最简单最安全的方法,在 /etc/cloud 目录下创建 cloud-init.disabled 文件重启后生效。删除该文件就可以恢复 # 创建cloud-init.disabled文件 sudo touch /etc/cloud/cloud-init.disabled # 重启 reboot 2、移除 cloud-init 软件包及文件夹…...
Python爬虫中如何正确配置住宅IP代理?新手避坑指南
很多人买完住宅IP,配置半天还是报错、被封。本文手把手教你用Python正确接入住宅代理,附代码和常见问题解决。一、为什么你的代理配置总失败?常见的几种错误:协议用错:服务商给的SOCKS5,你却按HTTP方式配认…...
LeagueAkari:5个智能功能提升你的英雄联盟游戏体验
LeagueAkari:5个智能功能提升你的英雄联盟游戏体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为英雄联盟繁琐的客户端操作…...
终极AMD Ryzen调试指南:5个核心功能彻底释放处理器性能
终极AMD Ryzen调试指南:5个核心功能彻底释放处理器性能 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://g…...
15万个科技岗位消失的真相
周四早上7点43分,我的手机震动了一下,是一位同行的消息——另一位我认识了五年的数据团队负责人。他管理的团队规模是我的两倍,所在的公司你一定听说过。 消息只有四个字:“你的人安全吗?” 我立刻明白他的意思。Met…...
常用shell命令总结(Linux命令)
当前目录 .上一级目录 …根目录,或者是目录拼接符 /管道符(左侧输出作为右侧输入) |上一个命令的返回码 $?或 ||且 &&cat 查看文档 cat XX.txt加权限 chmod x 文件 chmod 777 文件改变文件的所有者 chown newowner file.txt改变文件…...
Sora 2批量视频生成工作流深度拆解(企业级高并发视频生产系统架构图首次公开)
更多请点击: https://codechina.net 第一章:Sora 2批量视频生成工作流全景概览 Sora 2作为新一代大规模视频生成模型,其批量处理能力已深度集成于可编程工作流中,支持从提示工程、参数调度、分片渲染到后处理导出的端到端自动化…...
微软逐步淘汰 SMS 身份验证,通行密钥带来更强安全保障!
ZDNET 要点总结微软正在逐步淘汰将 SMS 作为身份验证方式,因为 SMS 消息未加密,易受黑客攻击。微软账户所有者将被提示设置通行密钥。通常登录或找回在线账户时会收到 SMS 验证短信,但这并非安全的身份验证方式,如今微软对使用微软…...
oracle logminer
Oracle LogMiner 日志挖掘 【一、LogMiner 核心概念】LogMiner 是 Oracle 内置的日志分析工具,通过解析 redo log / 归档日志, 提取其中的 SQL 变更记录,用于:• 数据审计(谁改了什么、什么时候改的) • 数…...
2026年主流AI论文写作软件全攻略(含保姆级操作教程)
以下是当前学术圈口碑TOP的6款AI写论文工具,覆盖从选题、开题到降重、答辩的论文全流程,剔除冗余工具,每款均附分步骤实操指南场景适配技巧,重点突出中文论文适配性,新手也能快速上手,效率翻倍。一、全流程…...
CircuitJS1 Desktop Mod终极指南:开启离线电路仿真新纪元
CircuitJS1 Desktop Mod终极指南:开启离线电路仿真新纪元 【免费下载链接】circuitjs1 Standalone (offline) version of the Circuit Simulator with small modifications based on modified NW.js. 项目地址: https://gitcode.com/gh_mirrors/circ/circuitjs1 …...
