简而言之,我得到以下错误:
QObject::connect: Cannot queue arguments of type 'cv::Mat'
(Make sure 'cv::Mat' is registered using qRegisterMetaType().)
Run Code Online (Sandbox Code Playgroud)
我要做的是将包含两个cv :: Mat图像的信号从QThread发送到主线程,以便我可以显示输出.没有编译时错误,但是当我运行程序时,它会卡在qglobal.h(inline void qt_noop() {})的断点处.
我试图添加Q_DECLARE_METATYPE(cv::Mat)到代码,无济于事.我现在很蠢.
在QThread类中:
signals:
void sndFlow(cv::Mat &leftEye, cv::Mat &rightEye);
void eyesDriver::run()
{
forever
{
flow->draw(leftEye, rightEye);
sndFlow(leftEye, rightEye);
}
}
Run Code Online (Sandbox Code Playgroud)
捕获QObject类:
public slots:
void recFlow(cv::Mat &leftEye, cv::Mat &rightEye);
void myClass::recFlow(cv::Mat &leftEye, cv::Mat &rightEye)
{
cv::imshow("left", leftEye);
cv::imshow("rigth", rightEye);
cv::waitKey(40);
}
Run Code Online (Sandbox Code Playgroud)
主要:
Q_DECLARE_METATYPE(cv::Mat)
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qRegisterMetaType< cv::Mat >("cv::Mat");
// …Run Code Online (Sandbox Code Playgroud) 我在ubuntu 12.04上使用KDevelop 4.3.1.它没有解析Eigen 3库,而这个发行说明说它应该.
它比这更微妙.
当using namespace Eigen在代码之前放置一个时,KDevelop正在解析Eigen库的一部分.但是,它不会解析为类(例如,Matrix2d::Identity()不会解析Identity in ).
当使用嵌套的命名空间时,它将解析命名空间,但Eigen::Matrix2d除了被称为internal(即Eigen::internal)之外的其他内容(例如,将不会解析Matrix2d ).
我只发现了这个与我的问题类似的帖子,虽然这里的问题在KDevelop崩溃后解决了.有没有人有更可靠的溶出度?是否有人有同样的问题?
亲切的问候
PS:构建代码工作正常.