gpt4 book ai didi

OpenCV 不再打开视频文件 VideoCapture

转载 作者:行者123 更新时间:2023-12-02 17:37:29 28 4
gpt4 key购买 nike

我有一个问题似乎是由 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 3.xx 中,我必须通过执行以下操作强制 VideoCapture::open 使用 FFMPEG 库:

>cap.open("Myfile.avi", cv::CAP_FFMPEG) 

其中后一个参数是标识要使用哪个 VideoCapture API 后端的标志。其他感兴趣的人可以在此处找到该列表:
https://docs.opencv.org/3.3.0/d4/d15/group__videoio__flags__base.html

关于OpenCV 不再打开视频文件 VideoCapture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48813908/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com