cv :: VideoCapture :: set图像序列失败

时间:2015-09-28 07:49:28

标签: c++ opencv

我正在尝试使用游标在流中寻找特定的帧。

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源代码之前询问(可能需要一段时间)。

0 个答案:

没有答案