码迷,mamicode.com
首页 > 编程语言 > 详细

QT中使用 slot 传递 opencv 中得Mat对象以及 使用多线程集成开源代码。

时间:2015-01-04 20:59:33      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:

关于 slot传递 Mat 对象

以前一直是使用 Qtimer 定时器,设定超时后读取 dialog 对象的 Mat成员实现在 UI 里显示图像,发现这样对以后集成其他面向过程的代码增加了复杂度。

所以考虑使用 slot

即使用多线程处理图像后,发送 signal 给 dialog对象,dialog中 connect 他们就行了。

子线程.cpp

...

for(;;){

...

emit imageChanged (labelImg);

...

}

emit finished();

...

 

dialog.h

...

private slots:
void updateImage(const cv::Mat &img);

...

dialog.cpp

 

...

qRegisterMetaType< cv::Mat >("cv::Mat");
connect(worker, SIGNAL(imageChanged(const cv::Mat &)), this, SLOT(updateImage(const cv::Mat &)));

...

 

子线程.h

...

signals:
void imageChanged(const cv::Mat &img);

...

//////////////

父类 Worker

public slots:
virtual void doWork();

子线程

class CTWorker : public Worker

{
public:
CTWorker();
public slots:
void doWork(); //覆盖就 OK 了
};

#endif // CTWORKER_H

QT中使用 slot 传递 opencv 中得Mat对象以及 使用多线程集成开源代码。

标签:

原文地址:http://www.cnblogs.com/yuliyang/p/4201925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!