bug.cpp
1 | #include <opencv2/highgui/highgui.hpp> |
---|---|
2 | #include <iostream> |
3 | |
4 | cv::VideoCapture vc; |
5 | |
6 | void seek(int pos) { |
7 | int frame_id_set = pos;
|
8 | if (!vc.set(CV_CAP_PROP_POS_FRAMES, frame_id_set))
|
9 | std::cout << "error: set" << std::endl;
|
10 | int frame_id_get = vc.get(CV_CAP_PROP_POS_FRAMES);
|
11 | std::cout << "set frame pos " << frame_id_set << ", get frame pos " << frame_id_get << std::endl; |
12 | |
13 | cv::Mat frame; |
14 | if (!vc.read(frame)) {
|
15 | std::cout << "error: read" << std::endl;
|
16 | } else {
|
17 | std::cout << "read ok" << std::endl;
|
18 | // cv::imshow("Frame", frame);
|
19 | // cv::waitKey(100);
|
20 | } |
21 | } |
22 | |
23 | int main(int argc, char ** argv) { |
24 | const char * fn = "test3.avi"; |
25 | if (!vc.open(fn))
|
26 | std::cout << "error: open" << std::endl;
|
27 | |
28 | int frame_count = vc.get(CV_CAP_PROP_FRAME_COUNT);
|
29 | std::cout << frame_count << " frames" << std::endl;
|
30 | |
31 | seek(frame_count - 1);
|
32 | seek(frame_count - 2);
|
33 | seek(frame_count - 3);
|
34 | |
35 | return 0; |
36 | } |