OpenCV:cv :: imshow()冻结

OpenCV: cv::imshow() freezes

我已经编写了一些代码,当前包含两个窗口,以显示某些处理算法的不同阶段。 很简单,我用cv::namedWindow()创建了两个窗口,并用cv::imshow()显示cv::Mat。 我遇到一个问题,其中cv::imshow()一次又一次地(但并非总是如此)拒绝更新两个窗口。 该程序尚未挂起,我可以看到它仍在工作并处理传入的帧(因为我正在将内容打印到终端中以显示此内容),只是窗口没有显示新的帧。 在每次调用cv::imshow()之后,我都包括了cv::waitKey(2),但这无济于事。

这很烦人,我似乎无法在网上找到任何东西。 这并非总是会发生,但它经常会发生。 有时需要几分钟,有时需要几秒钟。

我正在使用带有OpenCV 2.3.1的Ubuntu 12.04(和Ubuntu 11.10,这在两台带有两个不同摄像头的机器上都发生)。


解决这个问题的一种方法是使用
cv :: destroyWindow()
调用窗口后。 如果您仅显示一系列图像,则效果很好,但如果显示视频,则效果不佳。