我正在尝试使用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;
        }
    }
    

    最佳答案

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

    我使用的第一个视频是this one(尽管可能不是我使用的确切下载),它似乎在VLC或OpenCV中不能很好地播放,但在Windows Media Player中可以正常播放。我认为这是因为它以MPEG AAC音频编码。

    然后,我下载了ht264编码的an elysium 4k trailer,在VLC和OpenCV中都可以正常工作。因此,Hooray 4K在OpenCV中并不是一个整体问题!

    所以我认为可能是文件大小。我付款并下载了7Gb 6分钟4K视频。即使在OpenCV和VLC中将其绘制到屏幕三遍,它也不会出现延迟。这是一个.mov文件,我目前无权访问编解码器(执行此操作时请更新此位)。

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

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

    关于c++ - OpenCV和4K视频,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34694310/

    10-11 18:38