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

  • 相关阅读:
    ftp命令行敲不了
    转载 vsftpd安装
    ftp上传不了故障
    mysql导入数据方法和报错解决
    time使用方法
    python 进程Queue
    python 进程事件
    python 进程信号量
    python 进程锁
    python 守护进程
  • 原文地址:https://www.cnblogs.com/yuliyang/p/4201925.html
Copyright © 2011-2022 走看看