OpenCV  4.5.1
Open Source Computer Vision
samples/cpp/videowriter_basic.cpp

An example using VideoCapture and VideoWriter class

#include <opencv2/core.hpp>
#include <iostream>
#include <stdio.h>
using namespace cv;
using namespace std;
int main(int, char**)
{
Mat src;
// use default camera as video source
VideoCapture cap(0);
// check if we succeeded
if (!cap.isOpened()) {
cerr << "ERROR! Unable to open camera\n";
return -1;
}
// get one frame from camera to know frame size and type
cap >> src;
// check if we succeeded
if (src.empty()) {
cerr << "ERROR! blank frame grabbed\n";
return -1;
}
bool isColor = (src.type() == CV_8UC3);
//--- INITIALIZE VIDEOWRITER
VideoWriter writer;
int codec = VideoWriter::fourcc('M', 'J', 'P', 'G'); // select desired codec (must be available at runtime)
double fps = 25.0; // framerate of the created video stream
string filename = "./live.avi"; // name of the output video file
writer.open(filename, codec, fps, src.size(), isColor);
// check if we succeeded
if (!writer.isOpened()) {
cerr << "Could not open the output video file for write\n";
return -1;
}
//--- GRAB AND WRITE LOOP
cout << "Writing videofile: " << filename << endl
<< "Press any key to terminate" << endl;
for (;;)
{
// check if we succeeded
if (!cap.read(src)) {
cerr << "ERROR! blank frame grabbed\n";
break;
}
// encode the frame into the videofile stream
writer.write(src);
// show live and wait for a key with timeout long enough to show images
imshow("Live", src);
if (waitKey(5) >= 0)
break;
}
// the videofile will be closed and released automatically in VideoWriter destructor
return 0;
}
cv::VideoWriter::isOpened
virtual bool isOpened() const
Returns true if video writer has been successfully initialized.
cv::VideoWriter::write
virtual void write(InputArray image)
Writes the next video frame.
cv::VideoCapture
Class for video capturing from video files, image sequences or cameras.
Definition: videoio.hpp:628
cv::waitKey
int waitKey(int delay=0)
Waits for a pressed key.
highgui.hpp
core.hpp
cv::VideoCapture::read
virtual bool read(OutputArray image)
Grabs, decodes and returns the next video frame.
cv::VideoWriter::fourcc
static int fourcc(char c1, char c2, char c3, char c4)
Concatenates 4 chars to a fourcc code.
cv::VideoWriter::open
virtual bool open(const String &filename, int fourcc, double fps, Size frameSize, bool isColor=true)
Initializes or reinitializes video writer.
CV_8UC3
#define CV_8UC3
Definition: interface.h:90
cv::VideoCapture::isOpened
virtual bool isOpened() const
Returns true if video capturing has been initialized already.
cv::imshow
void imshow(const String &winname, InputArray mat)
Displays an image in the specified window.
cv::VideoWriter
Video writer class.
Definition: videoio.hpp:864
cv::Mat
n-dimensional dense array class
Definition: mat.hpp:798
cv
"black box" representation of the file storage associated with a file on disk.
Definition: affine.hpp:52
videoio.hpp