我正在尝试使用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%的速度最大化所有内核。
我的问题是:(使这篇文章具体化)
如果有任何人有过使用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;
}
}
答案 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中进行任何非常有用的测试