Here is a small code snippet for OpenCV which reads an image sequence backwards. It needs a sequence of images 000.png, 001.png, 002.png, … in the project’s folder.
1 2 3 4 5 6 7 8 9 10 11 | cv::Mat frame; cv::VideoCapture capture( "000.png" ); capture.set(CV_CAP_PROP_POS_AVI_RATIO, 1); while ( true ) { capture >> frame; capture.set(CV_CAP_PROP_POS_FRAMES, capture.get(CV_CAP_PROP_POS_FRAMES) - 2); cv::imshow( "image" , frame); cv::waitKey(30); } |
So what does the code do?
- Setting the property CV_CAP_PROP_POS_AVI_RATIO to 1 means starting at the end of the sequence (0 = at the beginning).
- The property CV_CAP_PROP_POS_FRAMES defines the index of the next image to load. Since it is automatically increased after each image retrieval, we have to decrement it by the value of 2.