【发布时间】:2016-01-09 13:54:46
【问题描述】:
我正在尝试使用 OpenCV 读取和显示 4K 视频文件。同样的程序,附录 A 中显示的一个非常简单的程序,在显示 1080 视频时运行良好,但在升级到 4K 视频时有明显的延迟。
显然现在在任何操作中都有 16 倍以上的像素。
现在我通常在没有很好规格、内置显卡、4Gb RAM 和 i3 CPU 以及 HDD(不是 SSD)的 PC 上运行。我已经在具有 8GB RAM、i5 和 SSD 的 PC 上对此进行了测试,虽然使用了 3.XGb 的 RAM,但它似乎主要是一个 CPU 密集型程序,即使在更好的 PC 上,我的所有内核也能达到 100%。
我的问题是:(使这篇文章具体化)
- 使用 GPU 操作会有所帮助吗?
- 这个问题可以通过升级到具有更好 CPU 的 PC 来解决吗?实际上,这个应用程序只能在 i7 上运行,因为我不认为我们会购买服务器 CPU...
- 是绘图到屏幕操作还是简单地从磁盘读取导致速度变慢?
如果有人过去有任何使用 4K 和 OpenCV 的经验,这也是有用的信息。
附录 A
int main()
{
VideoCapture cap(m_selected_video);
if (!cap.isOpened()) // check if we succeeded
{
std:cout << "Video ERROR";
}
while (_continue)
{
Mat window1;
cap >> window1; // get a new frame from camera
imshow("Window1", window1);
if (waitKey(30) >= 0) break;
}
}
【问题讨论】:
-
您确实意识到每次迭代都在等待 30 毫秒,如果您要显示一个小图像,这可能工作得很好,但当它需要每帧显示 16 倍的像素时就不那么好了?
-
我没有意识到我在等待 30 毫秒。但是,将其降低到 1 毫秒,我认为这是您可以等待的最低值,并没有任何(显着)差异。
-
你能用VLC或ffplay流畅播放视频吗?
-
@Cornstalks 有趣的是,它似乎只在 Windows 媒体播放器中播放一致且流畅。如果我在任何一台 PC 上的 VLC 中播放它,它只会给我前几秒钟,然后视频部分会变绿并且很奇怪。音频一直在播放...
-
什么是视频编解码器? Windows Media Player 可能有一些 VLC/libav 没有的 GPU 加速。