使用Qt显示灰度图像

时间:2012-12-03 06:14:21

标签: qt user-interface

我一直在尝试使用Qt显示灰度图像。图像数据从包含256x256浮点数据的.txt文件加载。图像没有涉及标题。我已尝试在此link

中发布的解决方案

我使用QLabel课程来调用setPixmap的{​​{1}}。即使我可以打开一个Qt GUI窗口,但窗口只显示空白屏幕。

imageLabel - > setPixmap(的QPixmap :: fromImage(* MYIMAGE));

2 个答案:

答案 0 :(得分: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获得良好的灰度。

答案 1 :(得分:2)

如何使用灰度图像数据加载QImage?

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

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