From b141762070ab6e0a8d75ecd5d6e1d809beff2fd2 Mon Sep 17 00:00:00 2001 From: Kevin Hughes Date: Mon, 15 Apr 2013 13:21:20 -0400 Subject: [PATCH] added an example of using cv::VideoCapture to read image sequences like 000.pmg, 001.png ... 100.png etc. --- samples/cpp/starter_image_sequence.cpp | 69 ++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100755 samples/cpp/starter_image_sequence.cpp diff --git a/samples/cpp/starter_image_sequence.cpp b/samples/cpp/starter_image_sequence.cpp new file mode 100755 index 0000000000..f4b17c42a0 --- /dev/null +++ b/samples/cpp/starter_image_sequence.cpp @@ -0,0 +1,69 @@ +/* +* starter_image_sequence.cpp +* +* Created on: July 23, 2012 +* Author: Kevin Hughes +* +* A simple example of how to use the built in functionality of cv::VideoCapture to handle +* sequences of images. Image sequences are a common way to distribute data sets for various +* computer vision problems, for example the change detection data set from CVPR 2012 +* http://www.changedetection.net/ +* +*/ + +#include +#include + +#include + +using namespace cv; +using namespace std; + +void help(char** argv) +{ + cout << "\nThis program gets you started reading a sequence of images using cv::VideoCapture.\n" + << "Image sequences are a common way to distribute video data sets for computer vision.\n" + << "Usage: " << argv[0] << " \n" + << "example: " << argv[0] << " right%%02d.jpg\n" + << "q,Q,esc -- quit\n" + << "\tThis is a starter sample, to get you up and going in a copy pasta fashion\n" + << endl; +} + +int main(int argc, char** argv) +{ + if(argc != 2) + { + help(argv); + return 1; + } + + string arg = argv[1]; + VideoCapture sequence(arg); + if (!sequence.isOpened()) + { + cerr << "Failed to open Image Sequence!\n" << endl; + return 1; + } + + Mat image; + namedWindow("Image | q or esc to quit", CV_WINDOW_NORMAL); + + for(;;) + { + sequence >> image; + if(image.empty()) + { + cout << "End of Sequence" << endl; + break; + } + + imshow("image | q or esc to quit", image); + + char key = (char)waitKey(500); + if(key == 'q' || key == 'Q' || key == 27) + break; + } + + return 0; +}