当前位置: 首页 > news >正文

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;
}

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

相关文章:

Qt+opencv 视频分解为图片

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

一篇文章认识微服务的优缺点和微服务技术栈

目录 1、微服务 2、微服务架构 3、微服务优缺点 3.1 优点 3.2 缺点 4、微服务技术栈 1、微服务 微服务化的核心就是将传统的一站式应用&#xff0c;根据业务拆分成一个一个的服务&#xff0c;彻底地去耦合&#xff0c;每一个微服务提供单个业务功能的服务&#xff0c;一…...

[spark] dataframe的数据导入Mysql5.6

在 Spark 项目中使用 Scala 连接 MySQL 5.6 并将 DataFrame 中的数据保存到 MySQL 中的步骤如下&#xff1a; 添加 MySQL 连接驱动依赖&#xff1a; 在 Spark 项目中&#xff0c;你需要在项目的构建工具中添加 MySQL 连接驱动的依赖。 如果使用 Maven&#xff0c;可以在 pom.xm…...

2023年度业务风险报告:四个新风险趋势

目录 倒票的黄牛愈加疯狂 暴增的恶意网络爬虫 愈加猖獗的羊毛党 层出不穷的新风险 业务风险呈现四个趋势 防御云业务安全情报中心“2023年业务风险数据”统计显示&#xff0c;恶意爬虫风险最多&#xff0c;占总数的37.8%&#xff1b;其次是虚假账号注册&#xff0c;占18.79%&am…...

python编程从入门到实践(1)

文章目录 2.2.1命名的说明2.3字符串2.3.1使用方法修改字符串的大小写2.3.2 在字符串中使用变量2.3.3 制表符 和 换行符2.5.4删除空白2.5.5 删除前缀&#xff0b;后缀 2.2.1命名的说明 只能包含&#xff1a;字母&#xff0c;下划线&#xff0c;数字 必须&#xff1a;字母&#…...

ElasticSearch 文档操作

创建文档 指定id // 无则插入&#xff0c;有则覆盖&#xff08;覆盖的逻辑是先删除&#xff0c;再插入&#xff09; PUT /<target>/_doc/<_id> // 无则插入&#xff0c;有则覆盖 POST /<target>/_doc/<_id> // 无则插入&#xff0c;有则报错 PUT /&l…...

NXOpenC++布尔求和命令

一、概述 在进行批量布尔求和时&#xff0c;采用NXOpenC的方式要比UFun的方式美观的多&#xff0c;个人认为&#xff0c;ufun中UF_MODL_unite_bodies函数采用的是两两进行合并&#xff0c;显示多个步骤&#xff0c;而NXOpenC采用的是一个工具体和多个目标体进行合并&#xff0c…...

ubuntu python播放MP3,wav音频和录音

目录 一.利用pygame&#xff08;略显麻烦&#xff0c;有时候播放不太正常&#xff09;1.安装依赖库2.代码 二.利用mpg123&#xff08;简洁方便&#xff0c;但仅争对mp3&#xff09;1.安装依赖库2.代码 三.利用sox&#xff08;简单方便&#xff0c;支持的文件格式多&#xff09;…...

Rust学习笔记000 安装

安装命令 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh $ curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh info: downloading installerWelcome to Rust!This will download and install the official compiler for the Rust programming la…...

python AI五子棋对战

我写过一篇c++五子棋 c++五子棋代码-CSDN博客 现在又写了python import copy import time from enum import IntEnum import pygame from pygame.locals import *time = time.strftime("%Y-%m-%d %H:%M:%S") version = str(time)# 基础参数设置 square_size = 40 …...

图文证明 费马,罗尔,拉格朗日,柯西

图文证明 罗尔,拉格朗日,柯西 费马引理和罗尔都比较好证,不过多阐述,看图即可: 费马引理: 罗尔定理: 重点来证明拉格朗日和柯西 拉格朗日: 我认为不需要去看l(x)的那一行更好推: 详细的推理过程: 构造 h ( x ) f ( x ) − l ( x ) , 因为 a , b 两点为交点 , f ( a ) l ( …...

CEC2017(Python):粒子群优化算法PSO求解CEC2017(提供Python代码)

一、CEC2017简介 参考文献&#xff1a; [1]Awad, N. H., Ali, M. Z., Liang, J. J., Qu, B. Y., & Suganthan, P. N. (2016). “Problem definitions and evaluation criteria for the CEC2017 special session and competition on single objective real-parameter numer…...

AUTOSAR从入门到精通- 虚拟功能总线(RTE)(一)

目录 前言 几个高频面试题目 RTE S/R接口implicit与Explicit的实现与区别 接口的代码 implicit...

B/S架构云端SaaS服务的医院云HIS系统源码,自主研发,支持电子病历4级

医院云HIS系统源码&#xff0c;自主研发&#xff0c;自主版权&#xff0c;电子病历病历4级 系统概述&#xff1a; 一款满足基层医院各类业务需要的云HIS系统。该系统能帮助基层医院完成日常各类业务&#xff0c;提供病患挂号支持、病患问诊、电子病历、开药发药、会员管理、统…...

看懂基本的电路原理图(入门)

文章目录 前言一、二极管二、电容三、接地一般符号四、晶体振荡器五、各种符号的含义六、查看原理图的顺序总结 前言 电子入门&#xff0c;怎么看原理图&#xff0c;各个图标都代表什么含义&#xff0c;今天好好来汇总一下。 就比如这个电路原理图来说&#xff0c;各个符号都…...

赫夫曼树基本数据结构

自编头文件&#xff1a; #ifndef HUFFMAN_H_INCLUDED #define HUFFMAN_H_INCLUDED#include<limits.h> #include<string.h> typedef struct {unsigned int weight;unsigned int parent,lchild,rchild; }HTNode,*HuffmanTree; typedef char** HuffmanCode;void Sele…...

10TB海量JSON数据从OSS迁移至MaxCompute

前提条件 开通MaxCompute。 在DataWorks上完成创建业务流程&#xff0c;本例使用DataWorks简单模式。详情请参见创建业务流程。 将JSON文件重命名为后缀为.txt的文件&#xff0c;并上传至OSS。本文中OSS Bucket地域为华东2&#xff08;上海&#xff09;。示例文件如下。 {&qu…...

LLM之RAG实战(九)| 高级RAG 03:多文档RAG体系结构

在RAG&#xff08;检索和生成&#xff09;这样的框架内管理和处理多个文档有很大的挑战。关键不仅在于提取相关内容&#xff0c;还在于选择包含用户查询所寻求的信息的适当文档。基于用户查询对齐的多粒度特性&#xff0c;需要动态选择文档&#xff0c;本文将介绍结构化层次检索…...

Windows电脑引导损坏?按照这个教程能修复

前言 Windows系统的引导一般情况下是不会坏的&#xff0c;小伙伴们可以不用担心。发布这个帖子是因为要给接下来的文章做点铺垫。 关注小白很久的小伙伴应该都知道&#xff0c;小白的文章都讲得比较细。而且文章与文章之间的关联度其实还是蛮高的。在文章中&#xff0c;你会遇…...

记Android字符串资源支持的参数类型

参数以%开头&#xff0c;后拼接对应的参数类型名称&#xff0c;如下所示&#xff1a; <string name"tips">Hello, %s! You have some new messages.</string> 类型名称如下所示&#xff1a; s字符串格式用于插入字符串值。例如&#xff0c;"Hel…...

AI量化交易框架解析:从架构设计到实战部署

1. 项目概述&#xff1a;一个AI驱动的加密资产对冲基金框架最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“ai-hedge-fund-crypto”。光看名字&#xff0c;就能感受到一股浓浓的“量化AI加密”的混合气息。这其实是一个开源框架&#xff0c;旨在帮助开发者或量化研究员&…...

如何安全备份微信聊天记录:PyWxDump工具使用全指南

如何安全备份微信聊天记录&#xff1a;PyWxDump工具使用全指南 【免费下载链接】PyWxDump 删库 项目地址: https://gitcode.com/GitHub_Trending/py/PyWxDump 你是否曾因误删重要微信对话而懊悔不已&#xff1f;是否想永久保存珍贵聊天记录却不知从何下手&#xff1f;Py…...

终极解密指南:Windows平台NCM音频文件一键转换实战

终极解密指南&#xff1a;Windows平台NCM音频文件一键转换实战 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾因网易云音乐的NCM加密格式而烦恼&…...

Boss直聘职位数据自动化采集:Python爬虫架构设计与工程实践

1. 项目概述与核心价值最近在技术社区里&#xff0c;看到不少朋友在讨论一个叫longsizhuo/BossZhiPin_Job_Search的项目。光看名字&#xff0c;你大概就能猜到&#xff0c;这是一个跟“Boss直聘”和“职位搜索”相关的自动化工具。作为一个在招聘数据分析和自动化领域摸爬滚打了…...

终极指南:如何在Mac上免费快速导出微信聊天记录

终极指南&#xff1a;如何在Mac上免费快速导出微信聊天记录 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾因误删重要微信聊天记录而焦虑&#xff1f;或需要查找…...

基于Groq LPU与React技术栈构建极速AI聊天应用实战

1. 项目概述&#xff1a;当极速推理遇上聊天应用最近在折腾AI应用开发的朋友&#xff0c;估计都绕不开一个词&#xff1a;推理速度。模型能力再强&#xff0c;如果生成一句话要等上十几秒&#xff0c;用户体验就无从谈起。正是在这种背景下&#xff0c;我注意到了unclecode/gro…...

中文长文本语音崩溃?ElevenLabs API超时/截断/静音突变?20年语音架构师紧急发布的6行容错重试+分段重对齐代码(已验证10万+字符稳定输出)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;中文长文本语音崩溃的根因诊断与现象复现 中文长文本语音合成&#xff08;TTS&#xff09;在处理超长段落&#xff08;如 >3000 字&#xff09;时频繁出现进程中断、内存溢出或静音输出&#xff0c;…...

服务网格Istio实战

服务网格Istio实战 引言 服务网格&#xff08;Service Mesh&#xff09;作为微服务架构的基础设施层&#xff0c;提供了对服务间通信的精细控制能力。Istio是目前最流行的开源服务网格解决方案&#xff0c;它通过Sidecar代理拦截所有网络通信&#xff0c;提供流量管理、安全、可…...

VS Code光标主题buen-cursor:提升开发者编码体验的视觉优化方案

1. 项目概述&#xff1a;一个为开发者定制的光标主题 如果你和我一样&#xff0c;每天有超过8小时的时间都泡在代码编辑器里&#xff0c;那么你一定对那个闪烁的光标再熟悉不过了。它可能是你思考的起点&#xff0c;也可能是你调试时目光的焦点。但你是否想过&#xff0c;这个…...

基于AW9523与CircuitPython的互动LED灯带硬件开发实践

1. 项目概述&#xff1a;一个会“动”的LED灯带如果你玩过嵌入式开发&#xff0c;尤其是用Adafruit的板子做点小玩意儿&#xff0c;那你肯定对“快速原型”这个词不陌生。CircuitPython的出现&#xff0c;让写代码控制硬件变得像在电脑上写脚本一样简单。但有时候&#xff0c;板…...