mirror of
https://gitcode.com/gh_mirrors/es/esp32-opencv.git
synced 2025-08-06 18:24:38 +08:00
initial commit
This commit is contained in:
67
samples/cpp/videowriter_basic.cpp
Normal file
67
samples/cpp/videowriter_basic.cpp
Normal file
@ -0,0 +1,67 @@
|
||||
/**
|
||||
@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;
|
||||
}
|
Reference in New Issue
Block a user