【问题标题】:How can I get what went wrong in initialization of OpenCV's VideoCapture?如何在初始化 OpenCV 的 VideoCapture 时发现问题?
【发布时间】:2013-05-21 01:48:28
【问题描述】:

我想用 OpenCV 打开视频文件dt_passat.mpg。我使用以下代码:

#include <stdio.h>
#include <opencv2/opencv.hpp>

using namespace cv;

int main( int argc, char** argv )
{
    VideoCapture capture("dt_passat.mpg");
    if (!capture.isOpened()) {
        std::cerr << "ERR: capture is not opened" << std::endl;
        getchar();
        return -1;
    }
}

但是,它失败了,我不知道为什么。如何了解 VideoCapture 初始化的问题所在(未找到文件/损坏的文件/未知的编解码器/等)?

【问题讨论】:

    标签: c++ opencv error-handling


    【解决方案1】:

    不幸的是,OpenCV 并不总是拥有最好的文档。

    您可以尝试使用cvGetErrorStatus() 查看内部错误代码,然后使用cvErrorStr() 将其转换为可读字符串。见http://opencv.willowgarage.com/documentation/c/core_utility_and_system_functions_and_macros.html#cvGetErrStatus

    【讨论】:

    • 如果你使用opencv.willowgarage.com/wiki/InstallGuide中描述的linux,你是否安装了ffmpeg、libgstreamer、libv4l、libxine、unicap、libdc1394 2.x等可选依赖项?
    • 糟糕,我忘了。它有帮助,谢谢。但是,OpenCV 没有报告错误原因的机制吗?
    • OpenCV 有cvGetErrorStatus(),但在许多领域都缺乏高级的 HighGUI 部分。查看@martin 的回答
    【解决方案2】:

    opencv 图像/视频/摄像头 IO 和 gui 仅用于获取样本数据以测试算法以创建一个真正的应用程序,您需要一个功能更强大的通用库来处理系统内容。

    但是实际的图像处理算法质量相当不错。

    【讨论】:

    • 有趣的地方。对于视频 I/O 功能,您建议使用哪些库或工具?
    猜你喜欢
    • 2014-10-14
    • 2022-07-27
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    • 2022-07-12
    • 1970-01-01
    • 2014-03-16
    相关资源
    最近更新 更多