opencv学习5:cvtColor RGB图像转灰度图像原理

简介    

    将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。

首先上转换代码:

int main(int argc, char** argv)
{
    Mat src = imread("G:\\opencv-4.1.1\\faceDete\\faceDete\\aaa.jpg", IMREAD_COLOR);
    Mat grey(src.rows, src.cols, CV_8UC1, Scalar(0));
    //每行循环处理
    for (int y = 0; y < src.rows; y++) {
        uchar* cp = src.ptr(y);//获取第y行像素的首地址
        uchar* gp = grey.ptr(y);//获取第y行像素的首地址
        for (int x = 0; x < src.cols; x++) {//列
            *gp = (15 * cp[0] + 75 * cp[1] + 38 * cp[2]) >> 7;
            cp += 3;
            gp++;
        }
    }
 
    imshow("src", src);
    imshow(

你可能感兴趣的:(opencv,转灰度图像原理)