【发布时间】:2018-07-26 14:28:59
【问题描述】:
我有一个问题似乎是由 OpenCV 3.xx 引起的 - 该问题在 OpenCV 2.xx 中没有体现
问题在于读取视频文件。我的代码设置如下:
>#include <opencv2\opencv.hpp>
>#include <opencv2\core\core.hpp>
>#include <opencv2\highgui\highgui.hpp>
>#include <opencv2\imgproc\imgproc.hpp>
>#include <opencv2\features2d\features2d.hpp>
>int main()
> cv::VideoCapture cap;
> cv::Mat frame;
> if(!cap.open("Myfile.avi"))
> std::cout << "Open failed" << std::endl;
> else
> cap.read(frame);
>
> cv::imshow("Frame", frame);
> cv::waitKey(5000);
> return 0;
现在的问题是,当代码到达“cap.read(frame)”时,OpenCV 3.40 出现“向量下标超出范围”错误,而我构建的 OpenCV 2.4.9 不会发生这种情况。文件的格式是avi,它不是什么奇怪的编解码器,显然它可以在以前版本的OpenCV中工作。
我尝试过其他 OpenCV 3.xx 版本,但我在读取文件时遇到了相同或类似的问题。
我的问题有两个: 如何让 OpenCV 3.xx 能够读取视频文件(或者我需要回归到 2.xx?)
为什么重大修订更改完全搞砸了视频文件阅读?这对计算机视觉 API 没有任何意义。
猜测这与 FFMPEG 实现有关,因为各种搜索发现其他人对此有疑问。
非常感谢任何帮助。
谢谢
【问题讨论】:
标签: opencv ffmpeg computer-vision