C++结合OpenCV实现视频播放器

1. 导入OpenCV库和相关头文件。

#include <opencv2/opencv.hpp>

#include <iostream>

2. 创建一个窗口,用于显示视频帧。

cv::namedWindow("Video Player", cv::WINDOW_NORMAL);

3. 打开视频文件。

cv::VideoCapture cap("video.mp4"); // 替换为你的视频文件路径

if (!cap.isOpened()) {

    std::cout << "Error opening video file" << std::endl;

    return -1;

}

4. 循环读取视频帧并显示在窗口中。

while (true) {

    cv::Mat frame;

    cap >> frame; // 读取一帧图像

    if (frame.empty()) {

        break; // 如果读取失败,跳出循环

    }

    cv::imshow("Video Player", frame); // 显示图像

    if (cv::waitKey(30) >= 0) { // 等待用户按键,如果按下任意键则退出循环

        break;

    }

}

5. 释放资源并关闭窗口。

cap.release(); // 释放视频文件资源

cv::destroyAllWindows(); // 关闭所有窗口

完整的代码如下所示:

#include <opencv2/opencv.hpp>

#include <iostream>

 

int main()

{

    cv::namedWindow("Video Player", cv::WINDOW_NORMAL);

    cv::VideoCapture cap("video.mp4"); // 替换为你的视频文件路径

    if (!cap.isOpened())

{

        std::cout << "Error opening video file" << std::endl;

        return -1;

    }

    while (true) {

        cv::Mat frame;

        cap >> frame; // 读取一帧图像

        if (frame.empty()) {

            break; // 如果读取失败,跳出循环

        }

        cv::imshow("Video Player", frame); // 显示图像

        if (cv::waitKey(30) >= 0) { // 等待用户按键,如果按下任意键则退出循环

            break;

        }

    }

    cap.release(); // 释放视频文件资源

    cv::destroyAllWindows(); // 关闭所有窗口

    return 0;

}

 

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

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

相关文章

如何下载52pojie、CSDN、简书、Myitmx、博客园的文章?(最新教程)

使用的油猴插件&#xff0c;具体怎么安装问一下度娘。 我用的火狐&#xff0c;点点点就行了&#xff0c;省事 先安装油猴拓展&#xff0c;启用一下 Tampermonkey – 下载 &#x1f98a; Firefox 扩展&#xff08;zh-CN&#xff09; 在安装插件 SaveToPDF 脚本安装后&#…

基于EdgeWorkers的边缘应用如何进行单元测试?

随着各行各业数字化转型的持续深入&#xff0c;越来越多企业开始选择将一些应用程序放在距离最终用户更近的边缘位置来运行&#xff0c;借此降低延迟&#xff0c;提高应用程序响应速度&#xff0c;打造更出色的用户体验。 相比传统集中部署和运行的方式&#xff0c;这种边缘应…

基于 NOVATEK NT98530 Multiview Stitching 应用解决方案

感测技术近来于影像监控系统应用有了进一步的发展&#xff0c;多镜头的应用也与日俱增&#xff0c;如 AI 视觉感测会议相机&#xff0c;能满足远端多人聚会、远距教育训练的多元需求等&#xff0c;相关应用层面广泛涵盖了在生活中所面对的各种场景&#xff0c;带动更加可观的潜…

#{}和${}的区别

#{}和${}的区别 .本质区别:使用注意事项防止SQL注入排序like查询 . 在使用mybatis操作数据库的时候,我们在编写sql语言的时候,会遇到一个问题,就是在传参的时候,有两个符号#,$.这两个符号有什么异同呢,接下来,我就会带着大家对这个问题进行简单的探讨 本质区别: #执行的是预编…

idea自动生成实体类

第一步&#xff1a;idea连接数据库 出现这个就连接成功 第二步&#xff1a;选择数据库 第三步&#xff1a;创建实体类 也可以点击数据库一下子全部创建 选择创建实体类所放位置 这样就完成了&#xff0c;点击看看对其做相应修改

RK3588平台开发系列讲解(视频篇)RKMedia的VDEC模块

文章目录 一、 VDEC模块支持的编码标准介绍二、VDEC API的调用三、VDEC解码流程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢RKMedia是RK提供的一种多媒体处理方案,可实现音视频捕获、音视频输出、音视频编解码等功能。 一、 VDEC模块支持的编码标准介绍 RK3688 V…

【日常总结】MobaXterm session 如何迁移

一、场景 二、解决方案 三、实战 Stage 1&#xff1a;右键导出 Import sessions from file Stage 2&#xff1a;新MobaXterm软件中导入即可。Export all sessions to file 四、不足 一、场景 电脑更换&#xff0c;原电脑上MobaXterm中的20多个连接如何迁移 二、解决方案 …

如何判断 LM358 芯片是否损坏或故障?

LM358 芯片是一种流行的低功耗双运放&#xff0c;广泛应用于各种电子电路中&#xff0c;包括放大器、滤波器、积分器、比较器等。它以其低成本、高性价比和广泛的工作电源范围&#xff08;3V至32V单电源或1.5V至16V双电源&#xff09;而被广泛使用。 然而&#xff0c;像所有电…

十分钟学会用springboot制作微信小程序富文本编辑器

1.1 富文本模型设计 在构建富文本编辑器系统时&#xff0c;首先需要设计一个合适的富文本模型。 CREATE TABLE IF NOT EXISTS rich_texts (id INT PRIMARY KEY AUTO_INCREMENT,title VARCHAR(255),content TEXT,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );这个表包括…

如何在FBX剔除Lit.shader依赖

1&#xff09;如何在FBX剔除Lit.shader依赖 2&#xff09;Unity出AAB包&#xff08;PlayAssetDelivery&#xff09;模式下加载资源过慢问题 3&#xff09;如何在URP中正确打出Shader变体 4&#xff09;XLua打包Lua文件粒度问题 这是第371篇UWA技术知识分享的推送&#xff0c;精…

维护神经健康:新生儿补充维生素B12的注意事项

引言&#xff1a; 维生素B12是维持神经系统正常运作所必需的关键成分&#xff0c;对于新生儿的生长发育具有重要的作用。本文将深入探讨维生素B12的功能、新生儿补充的必要性&#xff0c;以及在补充维生素B12时应该注意的事项&#xff0c;以为父母提供科学、全面的育儿指南。 …

nginx配置及性能优化

1. 请简述nginx的工作原理&#xff1f; Nginx的工作原理基于事件驱动模型和异步非阻塞I/O处理机制。 具体来说&#xff0c;Nginx接收到客户端的请求后&#xff0c;会将该请求映射到配置文件中指定的location block。这个过程中&#xff0c;Nginx本身并不执行实际的工作&#…

Springboot常见跨域解决方案

1、使用CrossOrigin注解实现跨域【局域类跨域】 此注解既可以修饰类&#xff0c;也可以修饰方法。当修饰类时&#xff0c;表示此类中的所有接口都可以跨域&#xff1b;当修饰方法时&#xff0c;表示此方法可以跨域&#xff0c;使用此方式只能实现局部跨域&#xff0c;当一个项目…

springCloud gateway 防止XSS漏洞

springCloud gateway 防止XSS漏洞 一.XSS(跨站脚本)漏洞详解1.XSS的原理和分类2.XSS漏洞的危害3.XSS的防御 二.Java开发中防范XSS跨站脚本攻击的思路三.相关代码&#xff08;适用于spring cloud gateway&#xff09;1.CacheBodyGlobalFilter.java2.XssRequestGlobalFilter.java…

华为认证 | HCIE云计算考试难度大吗?

HCIE认证考试对考生的技术要求非常高&#xff0c;涉及云计算的各个方面&#xff0c;包括但不限于虚拟化、存储、网络、安全等。 许多人对HCIE认证的难度和费用存在疑问&#xff0c;下面将为您详细解析。 01 HCIE云计算考试难度大吗&#xff1f; 首先&#xff0c;我们来看看HCI…

C++基础语法学习笔记

C Tutorial 1.基础语法 C 应用&#xff1a;操作系统、图形用户界面和嵌入式系统 C和C区别&#xff1a;C支持类和对象 C语法 #include <iostream> using namespace std;int main(){cout << "hello world!";return 0; }int main () { cout << &q…

今日分享个三级联动

js代码 let xhr new XMLHttpRequest(); // 创建一个新的XMLHttpRequest对象&#xff0c;命名为xhr。用来请求接口&#xff0c;处理异步操作&#xff1b; // 这个对象用于在浏览器和服务器之间发送 HTTP 请求和接收响应。 xhr.open(get, js/index.json, true); // 打开一个新的…

8-Docker网络模式之container

1.介绍 Docker container网络模式是指指定新创建的Docker容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。 使用Docker container网络模式新建的容器不会创建的自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口等。然而两个容器除了网络…

知识图谱推理方法综述

目录 前言1 基于符号表示的推理方法1.1 Axioms和Datalog1.2 图结构和规则学习1.3 TBox和ABox 2 基于向量表示的推理方法2.1 嵌入系列和Ontology Embedding2.2 向量的规则学习2.3 图神经网络 3 符号逻辑和表示学习的融合3.1 向量表示学习与本体规则学习3.2 规则演绎推理3.3 符号…

Oracle闪回日志管理(flashbackup log)

Oracle闪回日志管理&#xff08;flashbackup log&#xff09; 1.开启闪回日志 shutdown immediate startup mount; alter database archivelog; alter database flashback on; alter database open; 2、查看闪回日志保留期限 show parameter flash 默认是1440分钟&#xff0c…