【发布时间】:2016-07-11 18:37:21
【问题描述】:
所以我有一个程序,我在其中使用 OpenCV 库进行一些处理,然后在 Qt 制作的 gui(在小部件上)中显示结果。问题是,如果我想在 gui 中“调试”opencv 实现,即对一些帧/掩码进行 imshow,它会创建窗口但不会刷新它,除非偶尔刷新。 尝试添加 waitKey(1) 来强制刷新只会冻结 gui,因此它是另一个死胡同。
关于如何解决这个问题的任何想法?如果需要,我会尝试做一个 MWE,但我的程序状态有点难以提取功能。
提前致谢。
【问题讨论】:
-
要让 Qt GUI 响应,主线程的事件循环必须具有控制权。如果没有,则 GUI 没有响应。就是这样,通常。任何像
waitKey这样的阻塞方法,或者Qt 本身以waitFor开头的任何东西,都不能在主线程中使用! -
所以没有办法更新imshows? ://
-
当然有:不要使用
waitKey等。如果您希望对 gui 中的按键做出反应,请使用按钮、全局加速器或全局事件过滤器。