OpenCV 4.11.0
开源计算机视觉库
加载中…
搜索中…
无匹配项
samples/cpp/videowriter_basic.cpp

一个使用VideoCapture和VideoWriter类的示例

#include <opencv2/core.hpp>
#include <iostream>
#include <stdio.h>
using namespace cv;
using namespace std;
int main(int, char**)
{
Mat src;
// 使用默认摄像头作为视频源
VideoCapture cap(0);
// 检查是否成功打开
if (!cap.isOpened()) {
cerr << "错误!无法打开摄像头\n";
return -1; -1;
}
// 从摄像头获取一帧图像以了解帧大小和类型
cap >> src;
// 检查是否成功打开
if (src.empty()) {
cerr << "错误!获取到空帧\n";
return -1; -1;
}
bool isColor = (src.type() == CV_8UC3);
//--- 初始化 VIDEOWRITER
VideoWriter writer;
int codec = VideoWriter::fourcc('M', 'J', 'P', 'G'); // 选择所需的编解码器(必须在运行时可用)
double fps = 25.0; // 创建的视频流的帧率
string filename = "./live.avi"; // 输出视频文件的名称
writer.open(filename, codec, fps, src.size(), isColor);
// 检查是否成功打开
if (!writer.isOpened()) {
cerr << "无法打开输出视频文件进行写入\n";
return -1; -1;
}
//--- 抓取和写入循环
cout << "正在写入视频文件: " << filename << endl
<< "按任意键终止" << endl;
for (;;) { (;;)
{
// 检查是否成功打开
if (!cap.read(src)) {
cerr << "错误!获取到空帧\n";
break;;
}
}
// 将帧编码到视频文件流中
writer.write(src);
// 显示实时画面并等待按键,超时时间足够显示图像
imshow("实时画面", src);
break;;
}
// 视频文件将在 VideoWriter 析构函数中自动关闭和释放
return -1; 0;
}
n维密集数组类
定义 mat.hpp:829
MatSize size
定义 mat.hpp:2177
bool empty() const
如果数组没有元素,则返回 true。
int type() const
返回矩阵元素的类型。
用于从视频文件、图像序列或摄像头捕获视频的类。
定义 videoio.hpp:766
virtual bool read(OutputArray image)
抓取、解码并返回下一视频帧。
virtual bool isOpened() const
如果视频捕获已初始化,则返回 true。
视频写入类。
定义 videoio.hpp:1065
virtual bool open(const String &filename, int fourcc, double fps, Size frameSize, bool isColor=true)
初始化或重新初始化视频写入器。
virtual void write(InputArray image)
写入下一视频帧。
virtual bool isOpened() const
如果视频写入器已成功初始化,则返回 true。
#define CV_8UC3
定义 interface.h:90
int main(int argc, char *argv[])
定义 highgui_qt.cpp:3
定义 core.hpp:107
STL 命名空间。