在Qt GUI中显示实时摄像机图像

时间:2014-05-24 19:21:47

标签: qt video refresh qimage qlabel

我试图制作一个应用程序,通过相机记录拍摄的实时图像,并使用Qt GUI在屏幕上显示。相机驱动程序和api为我提供了刷新指针显示的内存块的功能。 问题是我的图像不会刷新使用Qimage制作的Qlabel(下面的代码)

QImage myImage(raw_image_data_pointer, 768, 576, QImage::Format_RGB32   );
QLabel myLabel;

myLabel.setPixmap(QPixmap::fromImage(myImage));
myLabel.show();

如何让我的QLabel更新?

1 个答案:

答案 0 :(得分:3)

问题是您在里面创建了带有静态图像的标签小部件。包含的图像不再“连接”到您的相机,而只是视频流的一个帧的副本。为了使QLabel更新自己,您必须不断地用新的图像替换包含的图像。例如,您可以为此设置计时器:

MyClass:MyClass()
{
    QTimer *timer = new QTimer;
    connect(timer, SIGNAL(timeout()), this, SLOT(update()));
    timer->start(10); // Defines how often update the label.

    myLabel = new QLabel;
    [..]
}

// Slot
MyClass::update()
{
    QImage myImage(raw_image_data_pointer, 768, 576, QImage::Format_RGB32 );
    myLabel.setPixmap(QPixmap::fromImage(myImage));
}