多线程-openCV(imshow)-QMetaMethod错误

时间:2018-06-21 04:29:00

标签: opencv ffmpeg

我使用函数imshow()创建2个线程;从openCV 2.4.8开始,代码如下:

void camera1 (string url)
{
  Mat img;
  ....
  imshow("camera1",img);
  waitkey(1);
  ....
}
void camera1 (string url)
{
  Mat img;
  ....
  imshow("camera2",img);
  waitkey(1);
  ....
}
int main ()
{
....
   thread Process1(camera1,url1);
   thread Process2(camera2,url2);
....
} 

程序运行时,终端显示该错误: QMetaMethod :: invoke:无法在排队的连接中调用具有返回值的方法

当我删除imshow()函数之一时,程序运行良好。

谢谢!

1 个答案:

答案 0 :(得分:0)

与UI的任何交互(获取键事件,创建窗口,绘制)都应该在运行UI事件循环的主线程中进行。您可以在后台线程中处理数据,但是涉及imshowwaitkey时,只能在主线程中进行处理。