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.
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.