我有一个应用程序,它在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();
}