我有一个应用程序在OpenCV窗口中显示(处理)网络摄像头输出(使用imshow),并且在另一个线程中,有一个显示某些几何体的OSG窗口。问题是只要OSG窗口刷新,OpenCV窗口就不会更新(线程中的所有处理都会发生,只是对imshow的调用什么都不做)。如果我拖动OSG窗口,禁用刷新,OpenCV窗口将开始正常更新。
为什么会发生这种情况的任何想法?
(Windows 8,NVIDIA Quattro K2100,VC ++)
答案 0 :(得分:1)
您需要在OpenSceneGraph查看器循环中调用cv::waitKey()
函数以更新OpenCV窗口。这意味着不能只使用OpenSceneGraph函数viewer.run()
。相反,您必须使用以下查看器循环:
while (!viewer.done())
{
cv::waitKey(1);
viewer.frame();
}