Large update of videoio doc and samples following mshabunin comments
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
@file videocapture_basic.cpp
|
||||
@brief A very basic sample for using VideoCapture and VideoWriter
|
||||
@author PkLab.net
|
||||
@date Aug 24, 2016
|
||||
*/
|
||||
|
||||
#include <opencv2/opencv.hpp>
|
||||
#include <iostream>
|
||||
#include <stdio.h>
|
||||
|
||||
using namespace cv;
|
||||
using namespace std;
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
Mat frame;
|
||||
//--- INITIALIZE VIDEOCAPTURE
|
||||
VideoCapture cap;
|
||||
// open the default camera using default API
|
||||
cap.open(0);
|
||||
// OR advance usage: select any API backend
|
||||
int deviceID = 0; // 0 = open default camera
|
||||
int apiID = cv::CAP_ANY; // 0 = autodetect default API
|
||||
// open selected camera using selected API
|
||||
cap.open(deviceID + apiID);
|
||||
// check if we succeeded
|
||||
if (!cap.isOpened()) {
|
||||
cerr << "ERROR! Unable to open camera\n";
|
||||
return -1;
|
||||
}
|
||||
|
||||
//--- GRAB AND WRITE LOOP
|
||||
cout << "Start grabbing" << endl
|
||||
<< "Press any key to terminate" << endl;
|
||||
for (;;)
|
||||
{
|
||||
// wait for a new frame from camera and store it into 'frame'
|
||||
cap.read(frame);
|
||||
// check if we succeeded
|
||||
if (frame.empty()) {
|
||||
cerr << "ERROR! blank frame grabbed\n";
|
||||
break;
|
||||
}
|
||||
// show live and wait for a key with timeout long enough to show images
|
||||
imshow("Live", frame);
|
||||
if (waitKey(5) >= 0)
|
||||
break;
|
||||
}
|
||||
// the camera will be deinitialized automatically in VideoCapture destructor
|
||||
return 0;
|
||||
}
|
||||
@@ -1,14 +1,13 @@
|
||||
/*
|
||||
* starter_video.cpp
|
||||
/**
|
||||
* @file videocapture_starter.cpp
|
||||
* @brief A starter sample for using OpenCV VideoCapture with capture devices, video files or image sequences
|
||||
* easy as CV_PI right?
|
||||
*
|
||||
* Created on: Nov 23, 2010
|
||||
* Author: Ethan Rublee
|
||||
*
|
||||
* Modified on: April 17, 2013
|
||||
* Author: Kevin Hughes
|
||||
*
|
||||
* A starter sample for using OpenCV VideoCapture with capture devices, video files or image sequences
|
||||
* easy as CV_PI right?
|
||||
*/
|
||||
|
||||
#include <opencv2/imgcodecs.hpp>
|
||||
@@ -0,0 +1,65 @@
|
||||
/**
|
||||
@file videowriter_basic.cpp
|
||||
@brief A very basic sample for using VideoWriter and VideoCapture
|
||||
@author PkLab.net
|
||||
@date Aug 24, 2016
|
||||
*/
|
||||
|
||||
#include <opencv2/opencv.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 = CV_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