c++ - 列出 OpenCV 支持的文件扩展名

标签 c++ opencv video-capture mat

在 OpenCV 中,我看到 imread() 和 VideoCapture() 都将一个字符串带到多个扩展名的文件路径中。有没有办法获得他们支持的扩展列表?例如,获取“jpg”、“png”、“mov”、“mpg”等的列表?我假设这是系统相关的,其他人需要在运行时查询它。

此外,如何确定支持?如果有类似下面的代码,我得到的垫子似乎总是部分损坏(我可以看到一些图像)。无论我要求的帧数如何,它似乎都没有改变。我可以在我的视频播放器“totem”中播放这个视频,但我什至不确定 totem 和 OpenCV 是否对这个文件使用相同的编解码器。

Mat fromVideo(std::string _videoPath, int frame) {
    VideoCapture capture(_videoPath);

    Mat f;
    for (int i = 0; i < frame; i++) {
        capture >> f;
    }
    return f;
}

最佳答案

对于 imread()(更多信息 here):

  • Windows 位图 - *.bmp、*.dib(始终支持)
  • JPEG 文件 - *.jpeg、*.jpg、*.jpe(参见注释部分)
  • JPEG 2000 文件 - *.jp2(参见注释部分)
  • 可移植网络图形 - *.png(请参阅注释部分)
  • 可移植图像格式 - *.pbm、*.pgm、*.ppm(始终支持)
  • 太阳光栅 - *.sr、*.ras(始终支持)
  • TIFF 文件 - *.tiff、*.tif(参见注释部分)

对于VideoCapture():

  • AVI 文件 - *.avi

    It seems that AVI is the only format with decent cross-platform support. See here for more info.

关于c++ - 列出 OpenCV 支持的文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20852514/

相关文章:

android - 如何在android中获取实时视频录制的文件大小?

c++ - 查找每个 ConnectedComponent 区域的邻域

c++ - 在 C++ 中,您可以在子类中扩展具有不同参数值的参数化基类吗?

python - 寻找多个重叠矩形的并集 - OpenCV python

c++ - 如何跟踪视频中的前景并在其上绘制矩形

python - 如何在 OpenCV 中找到二进制骨架图像的端点?

c++ - STL 中基于容器的重载

C++,输出时移动一个NaN到数组末尾

python - Ubuntu 17.04 上的 OpenCV VideoCapture() 无法正常工作

python - 使用PyQt5录制视频