OSG窗口阻止OpenCV窗口的刷新

OSG window blocks refresh of OpenCV window

本文关键字:窗口 刷新 OpenCV OSG      更新时间:2023-10-16

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

你知道为什么会发生这种事吗?

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

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

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