OSG window 阻止 OpenCV 的刷新 window

OSG window blocks refresh of OpenCV window

我有一个应用程序可以在 OpenCV window(使用 imshow)中显示(已处理的)网络摄像头输出,并且在另一个线程中,还有一个 OSG window 显示一些几何图形。问题是只要 OSG window 正在刷新,OpenCV window 就不会更新(线程中的所有处理都发生了,只是对 imshow 的调用什么都不做)。如果我拖动 OSG window,禁用刷新,OpenCV window 开始正常更新。

知道为什么会发生这种情况吗?

(Windows 8, NVIDIA Quattro K2100, VC++)

您需要在 OpenSceneGraph 查看器循环中调用 cv::waitKey() 函数来更新您的 OpenCV windows。这意味着您不能 简单地使用 OpenSceneGraph 函数 viewer.run()。相反,您必须使用以下查看器循环:

while (!viewer.done())
    {
        cv::waitKey(1);
        viewer.frame();
    }