Я пытаюсь обновить QPixmap на QLabel в моем основном пользовательском интерфейсе Qt. Для этого вызывается следующий слот с переменной QImage "newImage" (потому что она из другого потока). QImage преобразуется в someImage с помощью convertFromImage (я также пробовал ::fromImage). Если я просто сохраню QImage «newImage» в файл, я получу зеленый прямоугольник и красный текст, которые я рисую с помощью OpenCV ранее, однако, если я сохраню преобразованное растровое изображение ИЛИ покажу преобразованное растровое изображение, я потеряю цвет для прямоугольника и текста на изображении, но сохраните цвет для самой рамки. Я разместил 2 изображения ниже, чтобы продемонстрировать разницу между QImage, который я передаю в этот слот, и растровым изображением, которое отображается в пользовательском интерфейсе в растровом изображении. Я не знаю, как заставить растровое изображение отображать прямоугольник и текст с цветом! Что я делаю неправильно? Спасибо!
void MainWindow::updateImage(QImage newImage, double timeElapsed) {
QImage someImage = newImage.convertToFormat(QImage::Format_RGB888);
// Get pixmap from data
m_NewPixMap.convertFromImage(someImage,Qt::ColorOnly); // Tried various ones of these
// Debug status
// qDebug() << "Pixmap received by MainWindow and elapsed time is: " << timeElapsed << " ( Image size is: " << newImage.byteCount() << " )";
// qDebug() << "Pixmap is null? " << m_NewPixMap.isNull();
// Update the label
float hz = 1000.0f / timeElapsed;
QString status;
status.sprintf("FrameRate (Hz) = %.02f (%.0f ms)", hz, timeElapsed);
// Update status label
m_StatusLabel->setText(status);
// Update the main view
m_Label->setPixmap(m_NewPixMap);
repaint();
//qDebug() << "Saving QImage now...";
QFile file(QString("output_detected_images/detected_image_%1.png").arg(m_Counter));
file.open(QIODevice::WriteOnly);
bool savedSuccessfully = newImage.save(&file,"PNG"); // This gives proper color in image
//bool savedSuccessfully = m_NewPixMap.save(&file, "PNG"); // THIS GIVES A BLACK IMAGE
qDebug() << "Done saving QPixmap... " << savedSuccessfully;
}
m_NewPixMap = QPixmap::fromImage(newImage);
не работает? - person vahancho   schedule 25.08.2014