• 5705阅读
  • 5回复

QImage显示图像发绿。。。请教有经验者解惑  (已解决) [复制链接]

上一主题 下一主题
离线mpx1983
 

只看楼主 倒序阅读 楼主  发表于: 2009-08-06
我用如下方式显示内存中的像素数据
QImage myImage((uchar*)pData,nCols,nRows,QImage::Format_RGB16);
其中pData是数据部分,nCols,nRows分别是图像高,宽;QImage::Format_*我试了所有参数都不能正常显示,显示出来的图像会发绿。

要显示的图像的信息如下:
compression----none
ImageType-------GrayScale
Photometric------MONOCHROME2
SamplesPerPixel-------1
Rows----------512
Cloumns------512
BitsAlloctated-----------16
BitsStored---------------12
HighBit--------------------11
BitsPerPixel-------------16

请问怎么样才能正常显示,或者告诉我为什么我显示出来的会发绿,原因出在哪里了?
感激不尽
[ 此帖被mpx1983在2009-08-06 14:33重新编辑 ]
离线mpx1983

只看该作者 1楼 发表于: 2009-08-06
原因我大概知道了,因为我要显示的图像ImageType是GrayScale(灰度图),所以用参数Format_RGB*就错了,可要用QImage来显示灰度图该如何做呢?
离线duduqq

只看该作者 2楼 发表于: 2009-08-06
我做过一个把数据转成QImage的例子, 我的数据是YUV的,先把数据转成RGB的,再把RGB的转成BMP的格式,然后QImage::loadFromData,这样才把图象显示出来。
这方法比较麻烦,你试试行不行。
离线mpx1983

只看该作者 3楼 发表于: 2009-08-06
只能把灰度图先转换成rgb才可以显示么?
难道QImage就没有直接显示灰度图的方法了? 郁闷呀
离线mpx1983

只看该作者 4楼 发表于: 2009-08-06
qt真的不能直接显示灰度图,只能先转换再显示么???
请遇到过同样问题的前辈来指点下

顶起
离线mpx1983

只看该作者 5楼 发表于: 2009-08-06
搞定了,如下即可:

QVector<QRgb> colorTable;
    for (int i = 0; i < 256; i++)
        colorTable.push_back(QColor(i, i, i).rgb());
    QImage myImage((uchar*)pData, 512, 512, 512, QImage::Format_Indexed8); // was incorrect
    myImage.setColorTable(colorTable);
快速回复
限100 字节
 
上一个 下一个