【opencv入门教程】9.视频加载

文章选自:
请添加图片描述

一、VideoCapture类

用于从视频文件、图像序列或摄像头捕获视频的类。

函数:CV_WRAP VideoCapture();@brief 默认构造函数CV_WRAP explicit VideoCapture(const String& filename, int apiPreference = CAP_ANY);@brief 使用 API 首选项打开视频文件、捕获设备或 IP 视频流进行视频捕获@param filename 可以是:- 视频文件名称(如 `video.avi`)- 图像序列(如 `img_%02d.jpg`,将读取类似于 `img_00.jpg, img_01.jpg, img_02.jpg, ...` 的样本)- 视频流 URL(如 `protocol://host:port/script_name?script_params|auth`)- GStreamer 管道字符串,格式为 gst-launch 工具格式,如果使用 GStreamer 作为后端请注意,每个视频流或IP摄像头都有自己的URL方案。@param apiPreference 首选的捕获 API 后端。可用于强制执行特定的读取器实现,如果有多个可用:例如 cv::CAP_FFMPEG 或 cv::CAP_IMAGES 或 cv::CAP_DSHOW。@sa cv::VideoCaptureAPIsCV_WRAP explicit VideoCapture(const String& filename, int apiPreference, const std::vector<int>& params)@brief 使用 API 首选项和参数打开视频文件、捕获设备或 IP 视频流进行视频捕获@param  `params` 参数允许指定额外的参数,编码为成对的(paramId_1, paramValue_1, paramId_2, paramValue_2, ...)`。CV_WRAP explicit VideoCapture(int index, int apiPreference = CAP_ANY);@brief 打开摄像头进行视频捕获@param index 要打开的视频捕捉设备的ID。要使用默认后端打开默认摄像头,只需传递 0。(对于向后兼容性,当 apiPreference 为 CAP_ANY 时,camera_id + domain_offset(CAP_*)的用法是有效的)@param apiPreference 首选的捕获 API 后端。可用于强制执行特定的读取器实现,如果有多个可用:例如 cv::CAP_DSHOW 或 cv::CAP_MSMF 或 cv::CAP_V4L。CV_WRAP explicit VideoCapture(int index, int apiPreference, const std::vector<int>& params);@brief 使用 API 首选项和参数打开摄像头进行视频捕获@param `params` 参数允许指定额外的参数,编码为成对(paramId_1, paramValue_1, paramId_2, paramValue_2, ...)`。请参阅 cv::VideoCaptureProperties

二、测试code

从本地读取视频进行显示
void Samples::LoadVideoFunc()
{//【1】读入视频VideoCapture capture;capture.open("./vtest.avi");//【2】循环显示每一帧while (1) {Mat frame;        //定义一个Mat变量,用于存储每一帧的图像capture >> frame; //读取当前帧//若视频播放完成,退出循环if (frame.empty()) {break;}imshow("Video", frame); //显示当前帧waitKey(30);                    //延时30ms}
}

从设备上读取视频进行显示

void Samples::VideoFunc()
{Mat frame;//--- 初始化videoVideoCapture cap;// 打开默认相机// cap.open(0);// OR advance usage: select any API backendint deviceID = 0;             // 0 = open default cameraint apiID = cv::CAP_ANY;      // 0 = autodetect default API// open selected camera using selected APIcap.open(deviceID, apiID);// 检测是否打开if (!cap.isOpened()) {cerr << "ERROR! Unable to open camera\n";//return -1;}//--- GRAB AND WRITE LOOPcout << "Start grabbing" << endl<< "Press any key to terminate" << endl;for (;;){// wait for a new frame from camera and store it into 'frame'cap.read(frame);// check if we succeededif (frame.empty()) {cerr << "ERROR! blank frame grabbed\n";break;}// show live and wait for a key with timeout long enough to show imagesimshow("Live", frame);if (waitKey(5) >= 0)break;}// the camera will be deinitialized automatically in VideoCapture destructor
}

三、结果显示

在这里插入图片描述

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

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

相关文章

海外的bug-hunters,不一样的403bypass

一种绕过403的新技术&#xff0c;跟大家分享一下。研究HTTP协议已经有一段时间了。发现HTTP协议的1.0版本可以绕过403。于是开始对lyncdiscover.microsoft.com域做FUZZ并且发现了几个403Forbidden的文件。 &#xff08;访问fsip.svc为403&#xff09; 在经过尝试后&#xff0…

阿里内部正式开源“Spring Cloud Alibaba (全彩小册)”

年轻的毕业生们满怀希望与忐忑&#xff0c;去寻找、竞争一个工作机会。已经在职的开发同学&#xff0c;也想通过社会招聘或者内推的时机争取到更好的待遇、更大的平台。 然而&#xff0c;面试人群众多&#xff0c;技术市场却相对冷淡&#xff0c;面试的同学们不得不面临着 1 个…

乘上 SpringBoot 东风,广场舞团掀起律动热潮

2 系统开发环境 2.1 Java技术 Java是由Sun公司推出的一门跨平台的面向对象的程序设计语言。因为Java 技术具有卓越的通用性、高效性、健壮的安全性和平台移植性的特点&#xff0c;而且Java是开源的&#xff0c;拥有全世界最大的开发者专业社群&#xff0c;所以Java的发展迅速。…

【PlantUML系列】状态图(六)

一、状态图的组成部分 状态&#xff1a;对象在其生命周期内可能处于的条件或情形&#xff0c;使用 state "State Name" as Statename 表示。初始状态&#xff1a;表示对象生命周期的开始&#xff0c;使用 [*] 表示。最终状态&#xff1a;表示对象生命周期的结束&…

React学习笔记(一)

创建函数写法一&#xff1a; 重点&#xff1a;函数有几种写法 function DemoShow() {return (<div className"App">函数声明</div>); }export default DemoShow;对应js创建函数声明&#xff1a;function sum1(a,b){return ab } 创建函数写法二&#x…

Brain.js(九):LSTMTimeStep 实战教程 - 未来短期内的股市指数预测 - 实操要谨慎

系列的前一文RNNTimeStep 实战教程 - 股票价格预测 讲述了如何使用RNN时间序列预测实时的股价&#xff0c; 在这一节中&#xff0c;我们将深入学习如何利用 JavaScript 在浏览器环境下使用 LSTMTimeStep 进行股市指数的短期预测。通过本次实战教程&#xff0c;你将了解到如何用…

创建 React Native 项目

创建 React Native 项目 npx react-nativelatest init YourProject切换依赖源 切换好源之后&#xff0c;你需要进入 android 目录&#xff0c;然后运行 gradlew build 命令。 Android 依赖安装是使用 gradlew 进行管理的。 $ cd android $ ./gradlew build --refresh-depend…

ipset搭配iptables实现城市IP访问限制

最近刷了一台飞牛os&#xff0c;但是没有二次验证的功能&#xff0c;裸奔在公网上&#xff0c;看着让人揪心。于是最近研究了一下&#xff0c;设置防火墙只让某些城市能够访问设备&#xff0c;这样大大降低了服务器的风险&#xff0c;因为大多数被黑的原因都是来自国外。 1.下…

Linx下自动化之路:Redis安装包一键安装脚本实现无网极速部署并注册成服务

目录 简介 安装包下载 安装脚本 服务常用命令 简介 通过一键安装脚本实现 Redis 安装包的无网极速部署&#xff0c;并将其成功注册为系统服务&#xff0c;开机自启。 安装包下载 redis-7.0.8.tar.gzhttp://download.redis.io/releases/redis-7.0.8.tar.gz 安装脚本 修…

Meta Llama 3.3 70B:性能卓越且成本效益的新选择

Meta Llama 3.3 70B&#xff1a;性能卓越且成本效益的新选择 引言 在人工智能领域&#xff0c;大型语言模型一直是研究和应用的热点。Meta公司最近发布了其最新的Llama系列模型——Llama 3.3 70B&#xff0c;这是一个具有70亿参数的生成式AI模型&#xff0c;它在性能上与4050…

PyMongo:Python中的MongoDB客户端

PyMongo&#xff1a;Python中的MongoDB客户端 MongoDB是一个流行的NoSQL数据库&#xff0c;它以文档存储方式存储数据&#xff0c;与传统的关系型数据库相比&#xff0c;MongoDB在处理大规模数据和灵活的数据结构上具有显著优势。PyMongo是官方提供的MongoDB Python客户端库&a…

Mybatis相关面试题

一、什么是 Mybatis&#xff1f; 1、Mybatis 是一 个 半 ORM&#xff08; 对象 关 系 映 射 &#xff09;框架 &#xff0c;它内 部 封 装 了 JDBC&#xff0c;开发时只需 要 关 注 SQL 语句 本 身 &#xff0c;不 需 要 花 费 精 力 去 处 理 加 载 驱 动 、 创 建 连 接 、 创…

idea_maven详解

秒懂Maven maven简介maven安装和配置maven本地配置maven工程的GAVP创建maven工程项目结构说明项目构建说明 Maven依赖管理核心信息配置依赖管理配置依赖信息查询依赖范围设置依赖属性配置依赖下载失败错误解决Build构建配置依赖传递依赖冲突 maven工程继承继承作用应用场景继承…

使用qrcode 前端生成二维码

安装依赖 npm install qrcode在Vue中使用 <template><div class"qr-code-generator"><inputv-model"text"type"text"placeholder"请输入要生成二维码的内容"class"input-box"/><button click"g…

Linux Ubuntu 安装配置RabbitMQ,springboot使用RabbitMQ

rabbit-Ubuntu 一篇文章学会RabbitMQ 在Ubuntu上查看RabbitMQ状态可以通过多种方式进行&#xff0c;包括使用命令行工具和Web管理界面。以下是一些常用的方法&#xff1a; 1-使用systemctl命令&#xff1a; sudo systemctl start rabbitmq-server sudo systemctl status ra…

LeetCode—189. 轮转数组(中等)

题目描述&#xff1a; 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例1&#xff1a; 输入: nums [1,2,3,4,5,6,7], k 3输出:[5,6,7,1,2,3,4] 解释: 向右轮转 1 步:[7,1,2,3,4,5,6] 向右轮转 2 步:[6,7,1,2,3,4,5] 向…

C# 向上取整多种实现方法

1.使用 Math.Ceiling 方法&#xff1a; 在 C# 中&#xff0c;可以利用 System.Math 类下的 Math.Ceiling 方法来实现向上取整。它接受一个 double 或 decimal 类型的参数&#xff0c;并返回大于或等于该参数的最小整数&#xff08;以 double 或 decimal 类型表示&#xff09;。…

微信小程序报错:http://159.75.169.224:7300不在以下 request 合法域名列表中,请参考文档

要解决此问题&#xff0c;需打开微信小程序开发者工具进行设置&#xff0c;打开详情-本地设置重新运行&#xff0c;该报错就没有啦

vrrp主备备份

VRRP&#xff08;Virtual Router Redundancy Protocol&#xff0c;虚拟路由冗余协议&#xff09;是一种用于实现路由器冗余以提高网络可靠性的协议。以下是对VRRP的详细介绍&#xff1a; 基本概念 VRRP路由器&#xff1a;运行VRRP协议的路由器称为VRRP路由器。虚拟路由器&#…

Selenium:强大的 Web 自动化测试工具

Selenium&#xff1a;强大的 Web 自动化测试工具 在当今的软件开发和测试领域&#xff0c;自动化工具的重要性日益凸显。Selenium 就是一款备受欢迎的 Web 自动化测试工具&#xff0c;它为开发者和测试人员提供了强大的功能和便利。本文将详细介绍 Selenium 是什么&#xff0c…