彩色图转灰度图之c++实现(qt + 不调包)

1.介绍

    在日常生活中,我们经常看到的图片是彩色图片,有时我们需要将彩色图片转换成灰度图片来处理,也就是将RGB三通道图片按照一定规则转换成一通道图片。

2.转换方式

    彩色图片转灰度图片,一般有三种方法

    第一种:平均法

    I = 1/3 * (R + G + B)

    第二种:最大最小平均法

    I= 0.5 * max(R, G, B)+ 0.5 * min(R, G, B)

    第三种:加权平均法 

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

3.代码实现(代码是我以前自学图像处理时写的,代码很粗糙没做任何优化,但很好理解

   只实现了方法1的算法,其它两种算法,是很容易基于此代码而改写出来:

QImage* MainWindow::greyScale(QImage* origiin)
{
    QImage* newImage = new QImage(origiin->width(), origiin->height(), QImage::Format_ARGB32);

    QColor oldColor;

    for(int y = 0; y < newImage->height(); y++)
    {
        for(int x = 0; x < newImage->width(); x++)
        {
            oldColor = QColor(origiin->pixel(x,y));
            int average = (oldColor.red() + oldColor.green() + oldColor.blue()) / 3;
            newImage->setPixel(x, y, qRgb(average, average, average));
        }
    }
    return newImage;
}

c++ opencv中,转灰度:

cvtColor(src_color, src_gray, COLOR_BGR2GRAY)

python opencv中,转灰度:

cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)

4.参考资料

    数字图像处理——技术详解与Visual C++实践(左飞等著),写代码与写博客的时间相差两年,至于还参考其他的资料不,我已经忘记了,如若需要,我可以补上去

你可能感兴趣的:(基于qt图像算法处理,c++,qt,开发语言)