12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- /**
- @file videowriter_basic.cpp
- @brief A very basic sample for using VideoWriter and VideoCapture
- @author PkLab.net
- @date Aug 24, 2016
- */
- #include <opencv2/core.hpp>
- #include <opencv2/videoio.hpp>
- #include <opencv2/highgui.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;
- }
|