OpenCV和4K视频

时间:2016-01-09 13:54:47

标签: c++ opencv

我正在尝试使用OpenCV来读取和显示4K视频文件。相同的程序,附录A中显示的一个非常简单的程序,在显示1080个视频时工作正常但升级到4K视频时有明显的延迟。

显然现在在任何操作中都有16倍像素。

现在,我一般在没有出色规格的PC上运行,内置显卡,4Gb RAM& i3 CPU和HDD(不是SSD)。我已经在装有8GB RAM,i5和i的PC上进行了测试。 SSD虽然使用了3.XGb的RAM,但它似乎主要是一个CPU密集型程序,并且即使在更好的PC上也能以100%的速度最大化所有内核。

我的问题是:(使这篇文章具体化)

  1. 使用GPU操作会有什么帮助吗?
  2. 这是一个可以通过升级到具有更好CPU的PC来解决的问题吗?实际上这个应用程序只能在i7上运行,因为我不认为我们会购买服务器CPU ......
  3. 是屏幕操作的绘图还是只是从导致速度变慢的磁盘读取它?
  4. 如果有任何人有过使用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;
        }
    }
    

1 个答案:

答案 0 :(得分:1)

这个问题的答案很有意思,但我认为归结为编解码器或视频编码。

我使用的第一个视频是this one(虽然这可能不是我使用的确切下载),但在VLC或OpenCV中看起来效果不佳,但在Windows媒体播放器中播放效果不错。我认为这是因为它是用MPEG AAC Audio编码的。

然后我下载了an elysium 4k trailer,这是h264编码的,似乎在VLC和&amp; OpenCV的。所以Hooray 4K在OpenCV中并不是一个整体问题!

所以我认为它可能是文件大小。我支付并下载了7Gb 6分钟4K视频。这在OpenCV和OpenC都很好。 VLC即使将其拉到屏幕上三次也没有延迟。这是一个.mov文件,我目前无法访问编解码器(当我这样做时,我会更新此位)。

所以TL:DR:这不是导致问题的文件大小或容器类型,但某些编解码器似乎确实存在问题。这只是一个小小的探索,可能会有不同的问题。

附录:感谢评论中玉米秸秆的帮助,他们指出WMP可能内置了GPU支持,并且在VLC中进行任何非常有用的测试