灰度图没有彩色,它的RGB色彩分量全相等,如(100,100,100)和(200,200,200),值越大越亮。

要将图片转换为灰度图只需要根据各像素的RGB值计算出对应的灰度值即可。那么问题来了灰度值该怎么计算呢?

方法有好几种,有取直接取G的值的,也有取RGB平均值的,更为常用的是加权平均法,也就是R、G、B的权重不一样:

Gray = R*0.3 + G*0.59 + B*0.11

 

测试一下:

1.准备一种图片:

2. 测试代码:

代码很容易理解,循环获取图片的每一个像素的颜色值,再根据公式计算出灰度值,然后将灰色设置到对应的图片对象的相同位置上,最后保存图片即可。

QImage::pixelColor用于获取像素颜色,返回值是QColor对象。 QImage::setPixelColor用于设置像素颜色,参数是位置(x,y)和QColor对象。

 

3. 转换后的图像

 

 

其实还有一种更简单的方法,就是将图片的格式转换为 QImage::Format_Grayscale8

转换后的效果:

特别说明:


若后续发现文章中的错误或者对文章内容补充将只在我的个人博客中进行更新。我的博客主要记录编程中学到的知识、踩过的坑以及一些莫名其妙的想法。

欢迎来踩我的个人博客: fearlazy。