c++ - 在 Qt GUI 中显示图像序列?

标签 c++ qt opencv qtgui qt-signals

我有一个处理图像序列的 OpenCV 算法,我想使用如下代码在 Qt 窗口中显示每个处理过的帧:

while(someCondition){
    Mat img;
    ... //some OpenCV process here
    QImage qimg = matToQImage (img); //a function I found
    ui->someLabel->setPixmap(QPixmap::fromImage(qimg));

    //I want to add a delay here or some wait condition
}

但标签中只显示最后一张图片。我认为这是因为循环太快而 GUI 不能足够快地更新它。有没有办法让循环暂停,让 GUI 有时间显示图像,然后仅在 GUI 显示图像时继续?

最佳答案

根据您对我的评论问题的回复,这似乎是您可以接受的解决方案:

    connect(timer, &QTimer::timeout, [=] () {
        Mat img;
        ... //some OpenCV process here
        QImage qimg = matToQImage (img); //a function I found
        ui->someLabel->setPixmap(QPixmap::fromImage(qimg));
    });
    timer->start(10);

因为它正在使用 the new shiny signal-slot syntax for syntactic sugar ,不要忘记将其添加到您的项目文件中:

CONFIG += c++11

关于c++ - 在 Qt GUI 中显示图像序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23851147/

相关文章:

c++ - 你如何着手制作基于 tcp 的可靠 udp 协议(protocol)?

c++ - recv 有时接收不到全部数据

c++ - 如何在 C++ 中有效地将 double 转换为 int?

windows - 像Office 2007 中的Qt4 自定义窗框?

python - 如何以正确的方向旋转图像?

python - 如何使用python opencv找到图像中黑色物体的中心?

c++ - 如何使用 C 或 C++ 函数获取特定文件夹中的文件数?

qt - 将 Gstreamer 1.0 与 Qt Multimedia 结合使用

qt - Qt 中具有默认父对象的 QObject 的删除顺序是什么?

python - 图像的像素值在opencv python中未经修改而改变