我正在尝试更新主 Qt UI 中 QLabel 上的 QPixmap。调用以下插槽来使用“newImage”变量 QImage 执行此操作(因为它来自不同的线程)。 QImage 使用 ConvertFromImage 转换为 someImage (我也尝试过 ::fromImage )。如果我只是将 QImage“newImage”保存到文件中,我会得到一个绿色矩形和红色文本,这是我之前用 OpenCV 绘制的,但是,如果我保存转换后的像素图或显示转换后的像素图,我会丢失矩形和文本的颜色在图像中,但保留框架本身的颜色。我在下面发布了 2 张图像来演示我传递此插槽的 QImage 与显示在 UI 中的像素图之间的区别。我不知道如何让像素图显示带有颜色的矩形和文本!我究竟做错了什么?谢谢!
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;
}
从问题中,我了解到矩形和文本是源图像的一部分?
我猜测问题可能与颜色的不同格式有关... ConvertToFormat 无法解决。
也许尝试确保在源图像中矩形和文本以与图像其余部分相同的 RGB32 格式保存?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)