4

我一直在尝试使用 Qt 显示灰度图像。图像数据从包含 256x256 浮点数据的 .txt 文件加载。图像不涉及标题。我已经尝试过此链接中发布的解决方案

我用QLabel类来调用setPixmap我的uchar* image_data_array. 即使我可以打开一个 Qt GUI 窗口,但该窗口只显示空白屏幕。

imageLabel -> setPixmap(QPixmap::fromImage(*myImage));

4

3 回答 3

3
QImage img = AImage;
if (!AImage.isNull())
{
    int pixels = img.width() * img.height();
    if (pixels*(int)sizeof(QRgb) <= img.byteCount())
    {
        QRgb *data = (QRgb *)img.bits();
        for (int i = 0; i < pixels; i++)
        {
            int val = qGray(data[i]);
            data[i] = qRgba(val, val, val, qAlpha(data[i]));
        }
    }
}
return img;

使用 RGBA 以获得良好的灰度。

于 2012-12-03T10:41:47.123 回答
2

你是如何用灰度图像数据加载 QImage 的?

QT 没有灰度图像类型,只有双层类型。您可以使用 R=G=B=grey 创建 RGB 图像。或者更优选地使用QImage::Format_Indexed8并创建一个颜色表,其中每个条目具有与索引相同的值。IE

QImage *qi = new QImage(data_ptr, width, height, QImage::Format_Indexed8);
QVector<QRgb> my_table;
for(int i = 0; i < 256; i++) my_table.push_back(qRgb(i,i,i));
qi->setColorTable(my_table);
于 2012-12-03T09:53:35.800 回答
0

在 QT 5.9.1 中有一个创建灰度图像的选项:

QImage *qi = new QImage(data_ptr, width, height, QImage::Format_Grayscale8);
于 2021-12-14T22:09:03.337 回答