Marcin K.
Marcin K.

Reputation: 843

Displaying live camera image in Qt GUI

Im trying to make an application that takes live image recorded by camera and shows it on screen using Qt GUI. The camera driver and api provides me with functionality that refreshes the memory block showed by pointer. The problem is my image won't refresh inside Qlabel made with Qimage (code below)

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

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

How can i get my QLabel to be refreshed?

Upvotes: 2

Views: 4233

Answers (1)

vahancho
vahancho

Reputation: 21220

The problem is that you create the label widget with a static image inside. The containing image is not "connected" to your camera anymore, but is just a copy of a frame of your video stream. In order to make QLabel to update itself, you have to constantly replace the containing image with new one. For example, you can set up a timer for that:

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));
}

Upvotes: 4

Related Questions