我正在尝试使用游标在流中寻找特定的帧。
main.cpp 代码如下:
#include <iostream>
#include <opencv2/opencv.hpp>
int main()
{
cv::VideoCapture cap;
if (!cap.open("8%d.jpg"))
return 1;
double index = cap.get(CV_CAP_PROP_POS_FRAMES);
index += 10.0;
std::cout << "Seek to index: " << std::endl;
if ( !(index < cap.get(CV_CAP_PROP_FRAME_COUNT)) )
return 1;
bool retval = cap.set(CV_CAP_PROP_POS_FRAMES, index);
assert(retval);
std::cout << cap.get(CV_CAP_PROP_POS_FRAMES) << std::endl;
cap.release();
return 0;
}
Ubuntu上的命令行14.4.3 LTS与OpenCV 2.4.11:
g++ main.cpp `pkg-config --cflags --libs opencv`
检查返回值的命令:
echo "$#"
输出:
Seek to index: 10
-9.223377e+18
图像序列上的 cv::VideoCapture::set
函数似乎打破了流,你能告诉我为什么吗?
注意:它适用于视频作为输入,但不适用于图像序列!
PS:我更喜欢在查看OpenCV-FFmpeg源代码之前询问(可能需要一段时间)。