【发布时间】:2021-08-20 10:18:09
【问题描述】:
OpenCV 有什么方法可以从视频文件中并行读取帧或以其他方式加快读取速度?
我曾尝试在多个线程中使用cap.read(frame) 函数,但应用程序崩溃了。
我也尝试使用VideoCapture对象数组caps,都引用同一个视频文件,然后在每个线程中我可以使用caps[i].read(frame),所以我可以并行读取,但我只是读取同一帧多个次。
【问题讨论】:
-
你到底想做什么?你在处理帧吗?您是否尝试将视频放在 SSD 或 RAM 驱动器上?
-
嗨@Mark Setchell。我正在实现一个自定义 C++ 视频播放器应用程序,它需要能够以 30FPS 运行“特殊”非常大的视频文件,并且我不需要处理帧。正如您所提到的,一种解决方案是预处理视频文件,然后使用内存映射,但由于视频大小不是一个选项。我也尝试使用 FFmpeg 读取视频文件,但它比 OpenCV 慢。互联网上有很多关于图像处理加速技术的资料,但我没有找到任何关于阅读视频文件的资料。
-
“自定义视频播放器”...“不需要处理帧”——那么 OpenCV 是一个糟糕的选择。
VideoCapture是一个方便的原型制作工具。 -
嗨@DanMašek。什么是更好的选择?