diff --git a/modules/videostab/src/frame_source.cpp b/modules/videostab/src/frame_source.cpp new file mode 100644 index 0000000000..eb9fd70fb3 --- /dev/null +++ b/modules/videostab/src/frame_source.cpp @@ -0,0 +1,32 @@ +#include "precomp.hpp" +#include "opencv2/videostab/frame_source.hpp" + +using namespace std; + +namespace cv +{ +namespace videostab +{ + +VideoFileSource::VideoFileSource(const string &path, bool volatileFrame) + : path_(path), volatileFrame_(volatileFrame) { reset(); } + + +void VideoFileSource::reset() +{ + reader_.release(); + reader_.open(path_); + if (!reader_.isOpened()) + throw runtime_error("can't open file: " + path_); +} + + +Mat VideoFileSource::nextFrame() +{ + Mat frame; + reader_ >> frame; + return volatileFrame_ ? frame : frame.clone(); +} + +} // namespace videostab +} // namespace cv