二十三、视频处理和保存

项目功能实现:获取视频的参数信息,对视频文件进行转换到HSV色域空间并保存到指定路径中去
按照之前的博文结构来,这里就不在赘述了

一、头文件

video_save.h

#pragma once#include<opencv2/opencv.hpp>using namespace cv;class Video_Save {
public:void videosave(Mat& image);
};#pragma once

二、函数实现

video_save.cpp

VideoCapture capture("E:/C++_workspace/a1.mp4");
获取视频信息

frame_width = capture.get(CAP_PROP_FRAME_WIDTH);
得到原始视频的宽度信息
frame_height = capture.get(CAP_PROP_FRAME_HEIGHT);
得到原始视频的高度信息
count = capture.get(CAP_PROP_FRAME_COUNT);
得到原始视频总帧数
fps = capture.get(CAP_PROP_FPS);
得到原始视频的FPS(每秒处理的帧数)

VideoWriter writer("E:/C++_workspace/result.mp4", capture.get(CAP_PROP_FOURCC), fps, Size(frame_width, frame_height), true);
参数一:视频数据信息要保存的路径
参数二:以哪种编码形式进行保存,这里是跟原视频一样
参数三:每秒处理多少帧,这里和原视频一样
参数四:保存视频的大小,这里和原视频一样
参数五:是否是彩色视频数据

cvtColor(frame, result, COLOR_BGR2HSV);
转换色彩空间,对原视频的每帧数据frame进行转换到HSV色域中得到result

writer.write(result);
保存每帧图片,从而形成视频信息

capture.release();
writer.release();
处理完之后进行释放

#include"video_save.h"
#include<iostream>
#include<opencv2/opencv.hpp>void Video_Save::videosave() {//VideoCapture capture(0);//调用系统摄像头VideoCapture capture("E:/C++_workspace/a1.mp4");Mat frame, result;namedWindow("result", WINDOW_FREERATIO);namedWindow("frame", WINDOW_FREERATIO);int frame_width, frame_height, count;double fps;frame_width = capture.get(CAP_PROP_FRAME_WIDTH);frame_height = capture.get(CAP_PROP_FRAME_HEIGHT);count = capture.get(CAP_PROP_FRAME_COUNT);fps = capture.get(CAP_PROP_FPS);std::cout << "frame_width is: " << frame_width << std::endl;std::cout << "frame_height is: " << frame_height << std::endl;std::cout << "count is: " << count << std::endl;std::cout << "fps is: " << fps << std::endl;VideoWriter writer("E:/C++_workspace/result.mp4", capture.get(CAP_PROP_FOURCC), fps, Size(frame_width, frame_height), true);while (true) {capture.read(frame);//flip(frame, frame, 1);//翻转一下if (frame.empty()) {break;}cvtColor(frame, result, COLOR_BGR2HSV);imshow("result", result);imshow("frame", frame);writer.write(result);int c = waitKey(10);if (c == 27) {//Esc退出break;}}capture.release();writer.release();
}

三、主函数

yy_main.cpp

#include <opencv2/opencv.hpp>
#include <iostream>
#include "video_save.h"using namespace cv;
using namespace std;int main(int argc, char** argv) {Video_Save yy;yy.videosave();waitKey(0);destroyAllWindows();return 0;
}

项目结构如下:
在这里插入图片描述
运行效果图如下:
在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Redis(十六)缓存预热+缓存雪崩+缓存击穿+缓存穿透

文章目录 面试题缓存预热缓存雪崩解决方案 缓存穿透解决方案 缓存击穿解决方案案例&#xff1a;高并发聚划算业务 总结表格 面试题 缓存预热、雪崩、穿透、击穿分别是什么?你遇到过那几个情况?缓存预热你是怎么做的?如何避免或者减少缓存雪崩?穿透和击穿有什么区别?他两是…

websocket了解下

websocket请求长啥样 GET /chat HTTP/1.1 Host: example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ Sec-WebSocket-Version: 13 啥是websocket websocket是http的一种&#xff0c;服务器可以主动向客户端推送信息&#xff0c;…

电阻篇 | 二、压敏电阻

电阻篇 | 二、压敏电阻 定义 压敏电阻是一种具有非线性伏安特性得电阻器件&#xff0c;无极性&#xff0c;主要用在电路承受过压时进行电压钳位&#xff0c;吸收多余得电流以保护敏感器件&#xff0c;英文名称 Voltage Dependent Resistor&#xff0c;简称VDR&#xff0c;或者…

适合上班族使用的便签备忘录推荐哪个?

在如今较为繁忙的职场中&#xff0c;上班族家人们经常需要处理各种琐碎的工作任务。为了更好地管理时间、提高工作效率&#xff0c;一款好用的便签备忘录成为了不少上班族的首选工具。市面上各式各样的便签备忘录都有&#xff0c;但好用便签以其简洁方便的操作方式和多样化功能…

Excel快速下拉填充数据至9999行,再筛选出想要的数据

1 测试计算公式 2 选中单元格 3 批量赋值 4 数据筛选&#xff1a; 数据 -> 自动筛选 &#xff0c;列头出现三角箭头&#xff0c;进行过滤就可以了

证件照(兼容H5,APP,小程序)

证件照由uniappuyui开发完成&#xff0c;并同时兼容H5、App、微信小程序、支付宝小程序&#xff0c;其他端暂未测试。 先看部分效果图吧具体可以下方复制链接体验demo 首页代码 <template><view class""><view class"uy-m-x-30 uy-m-b-20"…

记一次 Flink 作业启动缓慢

记一次 Flink 作业启动缓慢 背景 应用发现&#xff0c;Hadoop集群的hdfs较之前更加缓慢&#xff0c;且离线ELT任务也以前晚半个多小时才能跑完。此前一直没有找到突破口所以没有管他&#xff0c;推测应该重启一下Hadoop集群就可以了。今天突然要重启一个Flink作业&#xff0c…

大模型分布式训练方法FDSP和DeepSpeed

备注&#xff1a; 本文部分内容参考自其他作者的内容&#xff0c;如有不妥&#xff0c;请联系&#xff0c;立即删除。 pytorch单精度、半精度、混合精度、单卡、多卡&#xff08;DP / DDP&#xff09;、FSDP、DeepSpeed模型训练 相关代码&#xff1a;pytorch-model-train-temp…

python递归算法

递归算法 一、嵌套调用的过程二、递归的基本原则1、递归的基本原则2、无限递归调用3、正常递归调用4、阶乘问题5、力扣&#xff1a;231. 2 的幂6、力扣面试题 08.05. 递归乘法7、力扣、326. 3 的幂8、力扣342. 4的幂 一、嵌套调用的过程 def show1():print("show 1 run s…

Node.js安装及环境配置

1. 前言 Node.js简介 Node.js 是一个开源的、跨平台的 JavaScript 运行环境&#xff0c;它允许开发者使用 JavaScript 编写服务器端代码。Node.js 基于 Google 的 V8 JavaScript 引擎构建&#xff0c;该引擎是 Chrome 浏览器中用于解析和执行 JavaScript 的核心组件。因此&am…

聊天敏感词监控该怎样实现?

当员工在日常工作中&#xff0c;经常使用企业微信、钉钉等聊天通讯软件进行沟通和管理&#xff0c;不可避免地会出现员工和客户之间敏感行为的出现。 例如员工飞单、辱骂客户、私自承诺、收取红包等违规行为&#xff0c;这些不仅会影响公司形象&#xff0c;还会造成经济损失。…

MATLAB Function转C代码实战

文章目录 前言1. 准备工作2. 使用MATLAB Coder2.1 确定输入输出的类型2.2 MATLAB Coder过程 3. 代码调整和优化4. 编译和测试5. 性能分析和优化结语 前言 在科学与工程领域&#xff0c;MATLAB&#xff08;Matrix Laboratory&#xff09;是一种广泛使用的高级技术计算软件&…

云图极速版限时免费活动

产品介绍 云图极速版是针对拥有攻击面管理需求的用户打造的 SaaS 应用&#xff0c;致力于协助用户发现并管理互联网资产攻击面。 实战数据 (2023.11.6 - 2024.2.23) 云图极速版上线 3 个月以来&#xff0c;接入用户 3,563 家&#xff0c;扫描主体 19,961 个&#xff0c;累计发…

什么是ChatGPT

国外有篇文章解释了ChatGPT的开发技术是什么&#xff0c;GPT-3和GPT-4的区别&#xff0c;以及未来的可能性。 截至 2023 年&#xff0c;ChatGPT 等生成式 AI 服务正在全球引起关注&#xff0c;并且正在探索在广泛领域的应用。 您可能想知道 ChatGPT 是使用哪种开发技术制作的&a…

vue里echarts的使用:画饼图和面积折线图

vue里echarts的使用,我们要先安装echarts,然后在main.js里引入: //命令安装echarts npm i echarts//main.js里引入挂载到原型上 import echarts from echarts Vue.prototype.$echarts = echarts最终我们实现的效果如下: 头部标题这里我们封装了一个全局公共组件common-he…

PCB共模辐射是如何产生的

目录 引言 模型分析01 模型分析02 模型分析03 模型分析04

Graphpad Prism10.2.0(329) 安装教程 (含Win/Mac版)

GraphPad Prism GraphPad Prism是一款非常专业强大的科研医学生物数据处理绘图软件&#xff0c;它可以将科学图形、综合曲线拟合&#xff08;非线性回归&#xff09;、可理解的统计数据、数据组织结合在一起&#xff0c;除了最基本的数据统计分析外&#xff0c;还能自动生成统…

kafka的安装,用于数据库同步数据

1.0 背景调研 因业务需求&#xff0c;需要查询其他部门的数据库数据&#xff0c;不方便直连数据库&#xff0c;所以要定时将他们的数据同步到我们的环境中&#xff0c;技术选型选中了kafkaCDC Kafka是Apache旗下的一款分布式流媒体平台&#xff0c;Kafka是一种高吞吐量、持久…

实用区块链应用:去中心化投票系统的部署与实施

一、需求分析背景 随着技术的发展&#xff0c;传统的投票系统面临着越来越多的挑战&#xff0c;如中心化控制、透明度不足和易受攻击等问题。为了解决这些问题&#xff0c;我们可以利用区块链技术去中心化、透明性和安全性来构建一个去中心化投票系统。这样的系统能够确保投票过…

编程学习线上提问现场解答流程,零基础学编程从入门到精通

编程学习线上提问现场解答流程 一、前言 之前给大家分享的一款中文编程工具&#xff0c;越来越多的学员使用这个工具学习编程。 在学习中有疑难问题寻求解答流程 1、可以在本平台留言或发私信联系老师 2、可以在群提问及时解答问题 3、通过线上会议的方式&#xff0c;电脑…