概述
问题描述:
原始图像
灰度化后
分析问题:
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图像灰度化后显示蓝色图像的全部内容,希望文章能够帮你解决Qt图像灰度化后显示蓝色图像所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复