在使用Qt线程传OpenCV的Mat时,出现以下报错:
该错误就是说,信号槽队列中的Mat系统不能识别,需要使用qRegisterMetaType()进行注册
解决方法:
1.注册
添加头文件
#include <QMetaType>
然后再注册
qRegisterMetaType<Mat>("Mat");
另一种方法
2.添加connect第五个参数为
Qt::DirectConnection
意思是Qt::DirectConnection(直连方式)
当信号发出后,相应的槽函数将立即被调用,emit语句后的代码将在所有槽函数执行完毕后被执行
connect(pvideothread,SIGNAL(sendFrame(Mat,Mat)),this,SLOT(receiveFrame(Mat,Mat)),Qt::DirectConnection);