zoukankan      html  css  js  c++  java
  • QT中使用 slot 传递 opencv 中得Mat对象以及 使用多线程集成开源代码。

    关于 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

  • 相关阅读:
    配置步骤
    swap区
    Oracle的left join中on和where的区别
    drop与truncate
    关于trace
    oracle执行计划连接方式
    oracle系统结构
    查询存档
    oracle统计信息
    分区索引
  • 原文地址:https://www.cnblogs.com/yuliyang/p/4201925.html
Copyright © 2011-2022 走看看