OpenCV提供了写入视频的接口类VideoWriter,VideoWriter是向文件中以指定的编码格式将每一帧图片写入到视频中。VideoWriter提供了常用的三种构造函数:
VideoWriter::VideoWriter()
VideoWriter::VideoWriter(const String &filename, int fourcc, double fps, Size frameSize, bool isColor=true)
VideoWriter::VideoWriter(const String &filename, int apiPreference, int fourcc, double fps, Size frameSize, bool isColor=true)
说明:
第一个为构造参数为默认构造参数
第二个和第三个的参数说明如下:
filename : 输出视频文件的路径名称
fourcc: 字符类型的编码,表示用于编码视频文件的编码器。其中 VideoWriter::fourcc(‘P’,’I’,’M’,’1’)表示MPEG-1 编码文件扩展名为avi; VideoWriter::fourcc(‘X’,’V’,’I’,’D’)表示MPEG-4编码文件扩展名为avi; VideoWriter::fourcc(‘X’,’2’,’6’,’4’) 表示MPEG-4编码文件扩展名为mp4;
VideoWriter::fourcc(‘I’,’4’,’2’,’0’) 表示YUV编码,文件扩展名为avi;
VideoWriter::fourcc(‘M’,’P’,’4’,’V’) 表示旧的MPEG-4编码,文件扩展名为avi;
VideoWriter::fourcc(‘T’,’H’,’E’,’O’) 表示使用ogg vorbis,文件扩展名为ogv;
VideoWriter::fourcc(‘F’,’L’,’V’,’1’) 表示flash video,文件扩展名为flv;
fps: 表示帧率
frameSize : 表示每一帧图像的大小
isColor : 灰度图像或者是彩色图像(仅仅在windows上支持)
apiPreference: 使用指定的API,例如可以使用cv::CAP_FFMPEG 或者 cv::CAP_GSTREAMER等。
VideoWriter类还提供了write方法并且使用了重载运算符<<写入视频的每一帧。其函数原型如下:
VideoWriter& VideoWriter::operator<<(Mat& frame);
void VideoWriter::write(const Mat &frame);
VideoCapture常用的一些函数如下:
函数 | 功能 |
---|---|
VideoWriter::isOpened() | Returns true if video writer has been initialized already |
VideoWriter::getBackednName() | Returns used backend API name |
VideoWriter::open(const String &filename, int fourcc, double fps, Size frameSize, bool isColor=true);VideoWriter::open(const String &filename,int apiPreference,int fourcc,double fps,Size frameSize,bool isColor=true); | Initializes or reinitializes video writer |
VideoWriter::release() | Closes the video writer |
VideoWriter::get(int propId); | Returns the specified VideoWriter property |
VideoWriter::set(int propId,double value); | Sets a property in the VideoWriter |
示例代码如下:
1 |
|