在 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/