OpenCV:VideoWriter视频录制

2023-10-28 01:40

本文主要是介绍OpenCV:VideoWriter视频录制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 示例代码:

/************************************************************************
* @ Creator:OYXL
* @ Project Creation time:2018/5/24
* @ Function:OpenCV录制视频
* @	Attention:需要按ESC才能完整录制视频,直接停止调试录制的视频是没有时间的
************************************************************************/
#include "opencv2/opencv.hpp"int main()
{//VideoCapture类对象,用于打开视频和摄像头cv::VideoCapture capture;	//VideoWriter类对象,用于录像cv::VideoWriter recordVideo;	capture.open(0);recordVideo.open("201956.avi", CV_FOURCC('M', 'J', 'P', 'G'), 25.0, cv::Size(640, 480), true);cv::Mat frame;while (capture.isOpened()){capture >> frame;recordVideo << frame;imshow("录制视频", frame);//ESC退出if (cv::waitKey(25) == 27){break;}}capture.release();//需要释放recordVideo.release();return 0;
}

代码解析

00 VideoWriter类(用于录制视频的类和VideoCapture类一样)

class CV_EXPORTS_W VideoWriter
{
public:CV_WRAP VideoWriter();CV_WRAP VideoWriter(const string& filename, int fourcc, double fps,Size frameSize, bool isColor=true);virtual ~VideoWriter();CV_WRAP virtual bool open(const string& filename, int fourcc, double fps,Size frameSize, bool isColor=true);CV_WRAP virtual bool isOpened() const;CV_WRAP virtual void release();virtual VideoWriter& operator << (const Mat& image);CV_WRAP virtual void write(const Mat& image);protected:Ptr<CvVideoWriter> writer;
};

VideoWriter类在OpenCV的highgui.hpp里面,像上面看到的一样包含了:open()函数、isOpened()函数、release()函数、write()函数,还有一个VideoWriter& operator << (const Mat& image);

01 创建VideoWriter类对象

VideoWriter m_SkyWrite;    //<VideoWriter类对象,用于录像

02 初始化录像

bool open(const string& filename, int fourcc, double fps,Size frameSize, bool isColor=true);

参数:

filename:保存视频的路径名

fourcc:录制视频的格式

OpenCV提供的格式是未经过压缩的,个人感觉录制的视频是有损失的,没有原视频效果好,目前支持的格式如下:

CV_FOURCC('P', 'I', 'M', '1') = MPEG-1 codec

CV_FOURCC('M', 'J', 'P', 'G') = motion-jpeg codec

CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec 

CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec 

CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec 

CV_FOURCC('U', '2', '6', '3') = H263 codec 

CV_FOURCC('I', '2', '6', '3') = H263I codec 

CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec

fps:录制视频的帧率(1秒多少帧)

frameSize:录制视频图片的尺寸大小(需要跟原图像保持一致)

isColor:bool类型的,一般默认为true,彩色

03 录制视频(逐帧写入)

m_SkyWrite<<frame;

或者

m_SkyWrite.write(frame);

04 释放对象(最好要释放对象,不然可能录制的视频是没有时间的)

m_SkyWrite.release();

05 操作

用上面这段代码,由于加了个按键控制视频录制,所以需要按下ESC才能完成视频录制

这篇关于OpenCV:VideoWriter视频录制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/289826

相关文章

在PyCharm中安装PyTorch、torchvision和OpenCV详解

《在PyCharm中安装PyTorch、torchvision和OpenCV详解》:本文主要介绍在PyCharm中安装PyTorch、torchvision和OpenCV方式,具有很好的参考价值,... 目录PyCharm安装PyTorch、torchvision和OpenCV安装python安装PyTor

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

OpenCV图像形态学的实现

《OpenCV图像形态学的实现》本文主要介绍了OpenCV图像形态学的实现,包括腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽运算和黑帽运算,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起... 目录一、图像形态学简介二、腐蚀(Erosion)1. 原理2. OpenCV 实现三、膨胀China编程(

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕

Java如何获取视频文件的视频时长

《Java如何获取视频文件的视频时长》文章介绍了如何使用Java获取视频文件的视频时长,包括导入maven依赖和代码案例,同时,也讨论了在运行过程中遇到的SLF4J加载问题,并给出了解决方案... 目录Java获取视频文件的视频时长1、导入maven依赖2、代码案例3、SLF4J: Failed to lo