前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >“眼睛成长记”(五)---映入眼帘

“眼睛成长记”(五)---映入眼帘

作者头像
视界音你而不同
发布2020-04-10 14:25:25
3430
发布2020-04-10 14:25:25
举报
文章被收录于专栏:用户1692782的专栏
写入视频

我们前几讲描述了OpenCV使用VideoCapture打开视频,关闭视频并获取视频属性。今天来看一下打开视频之后,我们如何写入视频,本质是也就是如何对视频进行编码。同样地,OpenCV为这个过程也提供了一个叫做VideoWriter的类。

打开写入视频的上下文:

open方法:

原型:

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

说明

filename: 输出的视频文件名

fourcc: 由4个字符组成的编码格式,如{‘X’, '2', '6', '4'}

fps: 视频的帧率

frameSize: 帧的大小

isColor: 是否为彩色视频

写入视频数据:

write方法:

原型

CV_WRAP virtual void write(const Mat& image);

说明 : 写入前的原始图片

判断打开成功

isOpened()方法:

VideoWriter与VideoCapture类似,都有isOpened方法,用来判断,上下文是否打开成功。成功返回true,失败返回false。

这里是代码:

代码语言:javascript
复制
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char *argv[])
{
 VideoCapture cam(0);
 if (!cam.isOpened()) {
 cout << " cam open failed " << endl;
 getchar();
 return -1;
 }
 cout << " cam open success. " << endl;
 namedWindow("cam");
 Mat img;
 VideoWriter vw;
 int fps = cam.get(CAP_PROP_FPS);
  if (fps <= 0) {
 fps = 25;
 }
 vw.open("out.avi", VideoWriter::fourcc('X','2', '6', '4'), 
 fps,
 Size(cam.get(CAP_PROP_FRAME_WIDTH),
 cam.get(CAP_PROP_FRAME_HEIGHT)),
 true);
 if (!vw.isOpened())
 {
 cout << " video open failed " << endl;
 getchar();
 return -1;
 }
 cout << " video open success " << endl;
 for (;;) {
 cam.read(img);
 if (img.empty()) break;
 imshow("cam", img);
 vw.write(img);
 if (waitKey(5) == 'q')
 break;
 }
 waitKey();
 return 0;

代码说明

1. 例子中使用VideoCapture打开本地摄像头;

2. 使用VideoWriter指定x264编码;

3.按q键退出程序。

4.用OpenCV的窗口显示每一帧图片。

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

本文分享自 视界音你而不同 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档