前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ OpenCV使用VideoWriter写入视频

C++ OpenCV使用VideoWriter写入视频

作者头像
Vaccae
发布2019-07-24 13:11:46
10.3K0
发布2019-07-24 13:11:46
举报
文章被收录于专栏:微卡智享微卡智享

VideoWriter

类的创建

VideoWriter的对象的创建有两种方式:

第一种是使用构造函数的形式:

cv::VideoWriter out(

const string& filename, // 输入文件名

int fourcc, // 编码形式,使用 CV_FOURCC()宏

double fps, // 输出视频帧率

cv::Size frame_size, // 单帧图片的大小

bool is_color = true // 如果是false,可传入灰度图像

);

第二种使用open()的方式:

cv::VideoWriter out;

out.open(

"my_video.mpg", //输出文件名

CV_FOURCC('D','I','V','X'), // MPEG-4 编码

30.0, // 帧率 (FPS)

cv::Size( 640, 480 ), // 单帧图片分辨率为 640x480

true // 只输入彩色图

);

CV_FOURCC可以获取的编码格式

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

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 MPEG-1是为CD光盘介质定制的视频和音频压缩格式; Motion JPEG是一种视频压缩格式,其中每一帧图像都分别使用JPEG编码; MPEG-4利用很窄的带宽,通过帧重建技术,压缩和传输数据,以求以最少的数据获得最佳的图像质量;


视频写入

VideoWriter对象写入图像

cv::VideoWriter::write(

const Mat& image // 写入图像作为下一帧

);

我们还有另一种方式,即“<<”操作

my_video_writer << my_frame;

前面我们在VideoCapture中的Read读视频的操作也可以用”>>“操作

my_video_writer >> my_frame;


下面我们用到的素材,视频素材还是我们上次已经开始用的《倾倒世界》,图像素材用我们以前经常用的

目标

我们是把上面这个图像写入到我们播放的视频里,比如在播放视频的第15帧,第30帧,第50帧,第65帧,都写入我们这个图像,然后播放出来看看。

视频效果

视频内容

实现思路

  1. 加载我们的图片为Mat图像。
  2. 通过VideoCapture加载视频获取到视频的FPS及宽和高
  3. 把我们的图像缩放至上一步获取到的宽和高大小
  4. 创建VideoWriter对象
  5. 播放VideoCapture加载的视频,获取到的每一帧都写入到VideoWriter的对象里,当判断到第15帧,第30帧,第50帧,第65帧时写入我们的Mat加载的图片;
  6. 释放资源。

代码编写

新建一个项目opencv-1003,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法


1.加载我们的图片为Mat图像


2.通过VideoCapture加载视频获取到视频的FPS及宽和高,并计算出两帧相隔的时间


3.把我们的图像缩放至上一步获取到的宽和高大小


4.创建VideoWriter对象

上面我们创建的时候直接定义为E盘Family文件夹下的test.avi文件,视频的格式为MJPG


5.播放VideoCapture加载的视频,获取到的每一帧都写入到VideoWriter的对象里,当判断到第15帧,第30帧,第50帧,第65帧时写入我们的Mat加载的图片;


6.释放资源


接下来我们运行起来就是上面视频的效果了。

-END-

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微卡智享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CV_FOURCC可以获取的编码格式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档