Qt+opencv 视频分解为图片

最近遇到一些售前提供的BUG,但是他们提供的是录像视频,因为处理显示速度比较快,因此很难找到出现问题的位置。需要反复播放,自己编写了一个视频分解成图片这样就可以一张图一张图的对比,方便查看。

开发环境

qt+openvc

sudo apt install libopencv-dev

源码说明

2.1 引用opencv动态库

.pro文件需要添加opencv的动态库

LIBS += -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs

2.2 Qt代码

将视频分解成每一帧,然后将每一帧保存位图片。

void MainWindow::slotClickBtn()
{ // 打开视频文件cv::VideoCapture video("/pan/录屏_选择区域_20231227104611.mp4");// 检查视频是否成功打开if (!video.isOpened()) {std::cerr << "无法打开视频文件" << std::endl;}// 读取视频的帧率和总帧数double fps = video.get(cv::CAP_PROP_FPS);int totalFrames = video.get(cv::CAP_PROP_FRAME_COUNT);// 逐帧读取视频并保存为图像文件for (int frameNumber = 0; frameNumber < totalFrames; ++frameNumber) {cv::Mat frame;video.read(frame);// 检查是否成功读取帧if (frame.empty()) {std::cerr << "无法读取视频帧" << std::endl;break;}// 生成图像文件名,例如 frame_0001.jpgstd::string filename = "frame_" + std::to_string(frameNumber + 1) + ".jpg";// 保存帧为图像文件cv::imwrite(filename, frame);}// 关闭视频文件video.release();std::cout << "视频分解完成,共生成 " << totalFrames << " 张图像文件。" << std::endl;}

2.3 源代码地址

https://gitcode.net/arv002/qt/-/tree/master/opencv/VideoDecomposition

三、扩展

3.1 VideoCapture 详解

cv::VideoCapture 是 OpenCV 中用于从视频文件、摄像头或图像序列中捕获帧的类。它提供了一种方便的方式来处理视频流和图像序列。

以下是一些关于 cv::VideoCapture 的主要方法和属性的详细说明:

构造函数

cv::VideoCapture(const cv::String& filename);
cv::VideoCapture(int index);
  • filename:视频文件的路径,可以是本地文件路径或网络 URL。
  • index:摄像头的索引。通常,0 表示默认摄像头,1 表示第二个摄像头,以此类推。

成员函数

bool open(const cv::String& filename);

打开视频文件。返回 true 表示成功打开,false 表示失败。

bool isOpened() const;

检查视频是否成功打开。返回 true 表示成功打开,false 表示失败。

void release();

释放资源。关闭视频文件或释放摄像头。

bool read(cv::OutputArray image);

从视频流中读取一帧。返回 true 表示成功读取,false 表示读取失败或到达视频末尾。

double get(int propId) const;

获取视频流的属性值,例如帧率、宽度、高度等。propId 是属性标识符,例如 cv::CAP_PROP_FPS 表示帧率。

bool set(int propId, double value);

设置视频流的属性值。propId 是属性标识符,value 是要设置的值。

示例用法

#include <opencv2/opencv.hpp>
#include <iostream>int main() {cv::VideoCapture cap("path/to/your/video.mp4");if (!cap.isOpened()) {std::cerr << "无法打开视频文件" << std::endl;return -1;}double fps = cap.get(cv::CAP_PROP_FPS);int width = cap.get(cv::CAP_PROP_FRAME_WIDTH);int height = cap.get(cv::CAP_PROP_FRAME_HEIGHT);std::cout << "帧率: " << fps << ",宽度: " << width << ",高度: " << height << std::endl;cv::Mat frame;while (cap.read(frame)) {// 处理每一帧cv::imshow("Frame", frame);cv::waitKey(30);  // 等待30毫秒}cap.release();cv::destroyAllWindows();return 0;
}

上述代码演示了如何打开视频文件、获取视频属性、逐帧读取视频并显示。请根据实际需求调整。

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

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

相关文章

Flutter 疑难杂症集合

一. Flutter集成uni小程序sdk 1. 手机连接电脑测试打开uni小程序没问题&#xff0c;打包成apk后debug编译下的apk也没问题&#xff0c;但就是release编译的apk包打不开小程序。 报错情景&#xff1a;点击后页面会闪现一下黑色的背景&#xff0c;然后又跳转回了点击之前的页面。…

LeetCode 热题 100——1.两数之和

1. 两数之和 提示 简单 18.1K 相关企业 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在…

c语言用四种方式求解成绩之中最高分和最低分的差值

文章目录 一&#xff0c;题目二&#xff0c;方法1&#xff0c;方法一2&#xff0c;方法二3&#xff0c;方法三4&#xff0c;方法四 三&#xff0c;示例结果 一&#xff0c;题目 最高分最低分之差 输入n个成绩&#xff0c;换行输出n个成绩中最高分数和最低分数的差 输入 : 两行…

linux | pause函数 、alarm函数、signal函数

//直接上demo #include <stdio.h> #include <unistd.h> #include <signal.h> #include <cerrno>void signalrm_fn(int sig) {printf("alarm!\n");alarm(2);return; } int main(void) {//信号触发函数 &#xff0c;当该线程触发到SIGALRM信号…

信息网络协议基础-IPv6协议

文章目录 概述为什么引入IP服务模型IPv4的可扩展性问题解决方法***CIDR(Classless Inter-Domain Routing, 无类别域间寻路)前缀汇聚***前缀最长匹配***NAT(网络地址转换)存在的问题解决方案路由表配置***局限性IPv6协议头标IPv6地址表示前缀类型单播地址链路局部地址(Link-Loca…

浅谈WPF之ToolTip工具提示

在日常应用中&#xff0c;当鼠标放置在某些控件上时&#xff0c;都会有相应的信息提示&#xff0c;从软件易用性上来说&#xff0c;这是一个非常友好的功能设计。那在WPF中&#xff0c;如何进行控件信息提示呢&#xff1f;这就是本文需要介绍的ToolTip【工具提示】内容&#xf…

k8s 的YAML文件详解

一、yaml文件简介 Kubernetes只支持YAML和JSON格式创建资源对象&#xff0c;JSON格式用于接口之间消息的传递&#xff0c;适用于开发&#xff1b;YAML格式用于配置和管理&#xff0c;适用于云平台管理&#xff0c;YAML是一种简洁的非标记性语言。 1&#xff09;yaml的语法规则&…

自动备份B站Up主最新视频到百度网盘的Python脚本详解

自动备份B站Up主最新视频脚本详解&#xff08;Win和Linux有些不同&#xff09; 前言&#xff1a; 次篇文章启发于某些大胆的UP主&#xff08;老马&#xff09;的多次被封&#xff0c;并被下架一些视频。有些人并不能及时观看到&#xff0c;故写一个脚本自动下载最新视频。 &am…

中小企业运营难题:CRM系统为您解决!

​CRM如何帮助中小企业解决业务与团队之间的问题&#xff1f;它可以帮助企业获取潜在客户、数据储存管理、建立标准化流程、减少客户流失、促进客户沟通等。客户关系管理的核心理念要以客户为最主要的资源&#xff0c;提供全面的客户服务&#xff0c;满足客户要求&#xff0c;实…

【信息安全原理】——入侵检测与网络欺骗(学习笔记)

&#x1f4d6; 前言&#xff1a;在网络安全防护领域&#xff0c;防火墙是保护网络安全的一种最常用的设备。网络管理员希望通过在网络边界合理使用防火墙&#xff0c;屏蔽源于外网的各类网络攻击。但是&#xff0c;防火墙由于自身的种种限制&#xff0c;并不能阻止所有攻击行为…

C++构建简单静态库实例(cmakelist)

一、开发实例 通过cmake构建静态开发实例如下: 1.1 代码目录 代码目录结构如下: 1.2 代码内容 1.2.1 CMakeLists.txt # CMake 最低版本要求 cmake_minimum_required(VERSION 3.10)# 项目名称 project(mylib)# 添加源文件 set(SOURCE_FILESsrc/mylib

每日一题(LeetCode)----二叉树-- 二叉树的右视图

每日一题(LeetCode)----二叉树-- 二叉树的右视图 1.题目&#xff08;199. 二叉树的右视图&#xff09; 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,nu…

助力打造清洁环境,基于美团最新YOLOv6-4.0开发构建公共场景下垃圾堆放垃圾桶溢出检测识别系统

公共社区环境生活垃圾基本上是我们每个人每天几乎都无法避免的一个问题&#xff0c;公共环境下垃圾投放点都会有固定的值班时间&#xff0c;但是考虑到实际扔垃圾的无规律性&#xff0c;往往会出现在无人值守的时段内垃圾堆放垃圾桶溢出等问题&#xff0c;有些容易扩散的垃圾比…

Nginx附-实战之负载均衡时怎么让请求不转发到一台正在启动的tomcat服务器上

问题描述 用nginx做负载均衡的时候&#xff0c;当一台挂掉的时候&#xff0c;请求会转发到另外一台。但挂掉这一台的tomcat服务在启动过程中&#xff0c;Nginx请求可能会转发到这台正在启动的服务器上&#xff0c;就会一直等待直到超时&#xff0c;前端使用者的体验就会很差。…

Apache Flink连载(十八):Flink On Yarn运行原理及环境准备

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1. Flink On Yarn运行原理…

【Pytorch】学习记录分享8——PyTorch自然语言处理基础-词向量模型Word2Vec

【Pytorch】学习记录分享7——PyTorch自然语言处理基础-词向量模型Word2Vec 1. 词向量模型Word2Vec)1. 如何度量这个单词的&#xff1f;2.词向量是什么样子&#xff1f;3.词向量对应的热力图&#xff1a;4.词向量模型的输入与输出![在这里插入图片描述](https://img-blog.csdni…

IT安全:实时网络安全监控

了解庞大而复杂的网络环境并非易事&#xff0c;它需要持续观察、深入分析&#xff0c;并对任何违规行为做出快速反应。这就是为什么实时网络安全监控工具是任何组织 IT 安全战略的一个重要方面。 网络攻击和合规性法规是 IT 安全的两个主要驱动因素。同时&#xff0c;数据泄露…

卷积神经网络 反向传播

误差的计算 softmax 经过softmax处理后所有输出节点概率和为1 损失&#xff08;激活函数&#xff09; 多分类问题&#xff1a;输出只可能归于某一个类别&#xff0c;不可能同时归于多个类别。 误差的反向传播 求w的误差梯度 权值的更新 首先是更新输出层和隐藏层之间的权重…

QT+OSG/osgEarth编译之六十一:bmp+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5插件库osgdb_bmp)

目录 1、BMP介绍 2、文件分析 3、pro文件 4、编译实践 1、BMP介绍 BMP取自位图Bitmap的缩写,是以微软开发的位图(Bitmap)图像格式保存的图片,也称为DIB(与设备无关的位图)。 BMP是一种独立于显示器的位图数字图像文件格式,支持可变颜色位深度和图像元数据的单…

Oracle数据updater如何回滚

1.查询update语句执行的时间节点 &#xff1b; select t.FIRST_LOAD_TIME, t.SQL_TEXT from v$sqlarea t where to_char(t.FIRST_LOAD_TIME) > 2023-03-19/17:00:00 order by t.FIRST_LOAD_TIME desc;开启表的行迁移 alter table test enable row movement;3.回滚表数据到…