C++ opencv之视频读写(VideoCapture,VideoWriter)

这篇博客主要讲解OpenCV中视频读写。
主要涉及到两个API函数:
VideoCapture
VideoWriter

一、函数简介

1.1 VideoCapture

视频文件读取、摄像头读取、视频流读取
VideoCapture既支持从视频文件(.avi , .mpg格式)读取,也支持直接从摄像机(比如电脑自带摄像头)中读取。要想获取视频需要先创建一个VideoCapture对象,VideoCapture对象的创建方式有以下三种:
**1、是从文件(.MPG或.AVI格式)中读取视频,**对象创建以后,OpenCV将会打开文件并做好准备读取它,如果打开成功,我们将可以开始读取视频的帧,并且cv::VideoCapture的成员函数isOpened()将会返回true(建议在打开视频或摄像头时都使用该成员函数判断是否打开成功)。

方法:  cv::VideoCapture capture(const string& filename);  // 从视频文件读取 
例程:  cv::VideoCapture capture("C:/Users/DADA/DATA/gogo.avi");  // 从视频文件读取

**【方式二】是从摄像机中读取视频,**这种情况下,我们会给出一个标识符,用于表示我们想要访问的摄像机,及其与操作系统的握手方式。对于摄像机而言,这个标志符就是一个标志数字——**如果只有1个摄像机,那么就是0,如果系统中有多个摄像机,那么只要将其向上增加即可。**标识符另外一部分是摄像机域(camera domain),用于表示摄像机的类型,这个域值可以是下面任一预定义常量。

[cpp] view plain
cv::VideoCapture capture(int device );  //视频捕捉设备 id ---笔记本电脑的用0表示 

【方式三】先创建一个捕获对象,然后通过成员函数open()来设定打开的信息,操作如下。

cv::VideoCapture VideoCapture;  这里的第二个VideoCapture是一个对象名
VideoCapture.open( "C:/Users/DADA/DATA/gogo.avi" );  

将视频帧读取到cv::Mat矩阵中,有两种方式:一种是read()操作;另一种是 “>>”操作。

cv::Mat frame;  
cap.read(frame); //读取方式一  
cap >> frame; //读取方式二  

1.2 VideoWriter

功能:视频写出、文件保存
我们先来看一下opencv3中的这个函数原型:

VideoWriter  video_writer;
video_writer.open(const string& filename, int fourcc, 

你可能感兴趣的:(OpenCV,c++,opencv)