added an example of using cv::VideoCapture to read image sequences like 000.pmg, 001.png ... 100.png etc.
parent
f7641be434
commit
b141762070
1 changed files with 69 additions and 0 deletions
@ -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 <opencv2/core/core.hpp> |
||||||
|
#include <opencv2/highgui/highgui.hpp> |
||||||
|
|
||||||
|
#include <iostream> |
||||||
|
|
||||||
|
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] << " <path to the first image in the sequence>\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; |
||||||
|
} |
Loading…
Reference in new issue