我使用函数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()函数之一时,程序运行良好。
谢谢!
答案 0 :(得分:0)
与UI的任何交互(获取键事件,创建窗口,绘制)都应该在运行UI事件循环的主线程中进行。您可以在后台线程中处理数据,但是涉及imshow
和waitkey
时,只能在主线程中进行处理。