voo*_*ant 5 c++ opencv video-capture mat
在 OpenCV 中,我看到 imread() 和 VideoCapture() 都将字符串带到多个扩展名的文件路径。有没有办法获得它们支持的扩展列表?例如,获取“jpg”、“png”、“mov”、“mpg”等列表?我认为这是系统相关的,其他人需要在运行时查询它。
此外,如何确定支持?如果有类似下面的代码,并且我返回的 Mat 似乎总是部分损坏(我可以看到一些图像)。无论我要求的帧数如何,它似乎都不会改变。我可以在我的视频播放器“图腾”中播放这个视频,但我什至不确定图腾和 OpenCV 是否对该文件使用相同的编解码器。
Mat fromVideo(std::string _videoPath, int frame) {
VideoCapture capture(_videoPath);
Mat f;
for (int i = 0; i < frame; i++) {
capture >> f;
}
return f;
}
Run Code Online (Sandbox Code Playgroud)
对于imread()(更多信息在这里):
为了VideoCapture():
AVI 文件 - *.avi
AVI 似乎是唯一具有良好跨平台支持的格式。请参阅此处了解更多信息。
使用该方法cv::VideoCapture::isOpened()确保构造函数成功初始化 VideoCapture 对象。
请注意,即使可以从 OpenCV(例如 AVI、MKV)获取受支持的容器格式及其典型文件扩展名的列表,您仍然需要知道受支持的编解码器的确切列表(甚至您需要知道的确切文件)。想要打开可能已损坏,等等...)。所以文件扩展名列表不足以准确描述OpenCV内部支持的内容,而OpenCV API级别最简单的解决方案就是这种isOpened()方法。
| 归档时间: |
|
| 查看次数: |
18833 次 |
| 最近记录: |