列出 OpenCV 支持的文件扩展名
list file extensions supported by OpenCV
在OpenCV中,我看到imread()和VideoCapture()都将字符串带到多个扩展名的文件路径中。有没有办法获取它们支持的扩展列表?例如,获取"jpg"、"png"、"mov"、"mpg"等列表?我认为这是系统相关的,其他人需要在运行时查询它。
此外,如何确定支持?如果有类似下面的代码并且我得到的垫子似乎总是部分损坏(我可以看到一些图像)。无论我要求的帧号如何,它似乎都不会改变。我可以在我的视频播放器"图腾"中播放这个视频,但我甚至不确定图腾和 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()
(更多信息在这里):
- Windows 位图 - *.bmp、*.dib(始终支持)
- JPEG 文件 - *.jpeg、*.jpg、*.jpe(请参阅注释部分)
- JPEG 2000 文件 - *.jp2(请参阅"注释"部分)
- 便携式网络图形 - *.png(请参阅"注释"部分)
- 便携式图像格式 - *.pbm、*.pgm、*.ppm(始终支持)
- 太阳光栅 - *.sr、*.ras(始终支持)
- TIFF 文件 - *.tiff、*.tif(请参阅注释部分)
对于VideoCapture()
:
-
AVI 文件 - *.avi
似乎 AVI 是唯一具有良好跨平台支持的格式。有关更多信息,请参阅此处。
使用方法 cv::VideoCapture::isOpened()
确保构造函数成功初始化 VideoCapture 对象。
请注意,即使可以从OpenCV(例如AVI,MKV)获取具有典型文件扩展名的受支持容器格式的列表,您仍然需要知道支持的编解码器的确切列表(即使这样,您要打开的确切文件也可能已损坏,等等)。因此,文件扩展名列表不足以准确描述OpenCV内部支持的内容,OpenCV API级别最简单的解决方案就是这种isOpened()
方法。
只需更新:
cv::VideoCapture cap("D:\test.mp4")
为我工作。
相关文章:
- 如何按文件扩展名引用文件夹中的文件
- 谁能告诉我,程序中的错误是什么?该程序仅用于获取文件扩展名
- 通过cMake使用具有自定义文件扩展名的共享库
- 在另一个字符串中插入文件扩展名之前的字符串
- 如何在不使用文件扩展名的情况下使用命令行参数打开C++中的文本文件?
- Eclipse CDT:传递具有相同文件扩展名的多个程序参数
- 将C 代码桥接到我的Swift代码中.哪些文件扩展名为XCode中的基于C的语言
- 如何打开并显示C 中任何文件扩展名的文件
- 循环浏览所有项目,其中QTREEVIEW QFILESYSTEMMODEL上具有所需的文件扩展名
- 如何调用 ShellExecute 以使用 C++ 打开具有特定程序的文件,而无需关联相同的文件扩展名
- 用户定义的C 文件扩展名,用于G 汇编
- 如何在 INFLATE 后获取原始文件扩展名
- CMake:如何仅将特定文件扩展名从一个目录复制到另一个目录
- 获取文件扩展名
- 共享库的TX文件扩展名
- 如何创建一个不敏感的正则态度以匹配文件扩展名
- 如何更改QT上的文件扩展名
- 列出 OpenCV 支持的文件扩展名
- 如何避免 CFile查找文件扩展名超过三个字符的误报
- C++模板实现文件扩展名约定