本文主要是介绍Qt图像灰度化后显示蓝色图像,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述:
原始图像
灰度化后
分析问题:
Rgb三个颜色分量中,只设置了蓝色分量B,其他两个分量为0,才会只显示蓝色图像。
解决问题:
将代码:
destImage.setPixel(x, y, qGray(r, g, b));
改为:
int gray = qGray(pixel);
QRgb grayPixel = qRgb(gray, gray, gray);
destImage.setPixel(x, y, grayPixel);
结果:
完整代码:
// convert color bmp image to gray
void BmpImage::convertRGBtoGray(const QImage &srcImage, QImage &destImage)
{
unsigned char *pImageBytes = (unsigned char*)srcImage.bits(); // first data address
int depth = srcImage.depth(); // bit number per pixel
int lineBytes = srcImage.bytesPerLine(); // bytes number per line
int width = srcImage.width(); // width
int height = srcImage.height(); // height
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
QRgb pixel = srcImage.pixel(x, y);
int r = qRed(pixel);
int g = qGreen(pixel);
int b = qBlue(pixel);
int gray = qGray(pixel);
QRgb grayPixel = qRgb(gray, gray, gray);
destImage.setPixel(x, y, grayPixel);
//destImage.setPixel(x, y, qGray(r, g, b));
}
}
}
参考链接:
http://www.haogongju.net/art/1220611
http://www.cnblogs.com/xianglan/archive/2010/12/24/1915905.html
http://blog.sina.com.cn/s/blog_697d972301014yol.html
这篇关于Qt图像灰度化后显示蓝色图像的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!