QT灰度图的处理

 QT提供了一个处理图像的类的QImage,使用这个类能很方便地获得图像的各种信息。但是在将彩色图像转换位灰度图时使用QImage提供的默认的彩色彪不能得到真正的灰度图,需要设置彩色表才可以。下面是一个彩色图像转换位灰度图的例子

QImage colourImg("colourImage.bmp");
QSize colourImgSize = colourImg.size();
int width = colourImgSize.rwidth();
int height = colourImgSize.rheight();
unsigned char *colourImgDataPtr = colourImg.bits();
QImage grayImg(colourImgSize, QImage::Format_Indexed8);
unsigned char *grayImgDataPtr = grayImg.bits();

for(int i = 0; i < height; i++)
{
 for(int j = 0; j < width; j++)
 {
  *grayImgDataPtr = *(colourImgDataPtr + 1);
  colourImgDataPtr += 4;
  grayImgDataPtr++;
 }
}
QVector<QRgb> grayColourTable;
unsigned int rgb = 0;
for(int i = 0; i < 256; i++)
{
 grayColourTable.append(rgb);
 rgb += 0x00010101;
}
grayImg.setColourTable(rayColourTable);
graImg.save("grayImage.bmp", "bmp");

 

你可能感兴趣的:(qt)