我试图在OS X 10.11.6上使用OpenCV进行简单的视频播放,但imshow()的性能非常糟糕。无论waitKey()参数值是什么,我都会从视频中获得1 fps左右。
疯狂的是:我将Windows 7作为在这台机器上运行的VMWare虚拟机,如果我在这个虚拟化的Windows上编译和运行完全相同的代码(在性能不佳的相同操作系统内运行),我得到了预期全帧率(30 FPS)。这意味着这与我的机器的内存或处理能力无关(i7,2.5GHZ,16GB RAM)。
这是我正在运行的代码
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, const char * argv[]) {
VideoCapture cap("/myvideo.mp4");
if(!cap.isOpened())
return -1;
Mat edges;
namedWindow("edges",1);
for(;;)
{
Mat frame;
cap >> frame;
imshow("edges", frame);
if(waitKey(30) >= 0) break;
}
return 0;
}
我已将此代码移植到python(使用python的官方OpenCV端口)并且问题仍然存在。如果我在这个虚拟窗口上运行相同的python代码,我会得到预期的帧速率(30 FPS)。
我已经读过这可能与VSYNC有关,但我找不到禁用它并进行测试的方法。如何在虚拟化窗口上比在主机操作系统上运行得更快?!
非常感谢帮助。
谢谢。
卡西亚诺