以下是一个将 RGB 彩色数字图像转换为灰度图的 C++ 函数:

void RGBToGray(unsigned char* rgbImage, unsigned char* grayImage, int width, int height)
{
    for(int y = 0; y < height; y++)
    {
        for(int x = 0; x < width; x++)
        {
            int index = y * width + x;
            int r = rgbImage[index * 3 + 0];
            int g = rgbImage[index * 3 + 1];
            int b = rgbImage[index * 3 + 2];
            grayImage[index] = (unsigned char)(0.299 * r + 0.587 * g + 0.114 * b);
        }
    }
}

该函数接受四个参数:'rgbImage' 为指向 RGB 彩色图像数据的指针;'grayImage' 为指向灰度图像数据的指针,该指针指向的内存空间应该预先分配;'width' 为图像的宽度;'height' 为图像的高度。

该函数使用双重循环遍历所有像素,并分别提取红、绿、蓝三个通道的值。然后,根据灰度转换公式 $Y = 0.299R + 0.587G + 0.114B$ 计算灰度值,并将其存储到灰度图像数据中。需要注意的是,由于灰度值只需要一个字节来表示,因此要将浮点数转换为整数,并强制转换为 'unsigned char' 类型。

C++ 函数将 RGB 彩色图像转换为灰度图

原文地址: https://www.cveoy.top/t/topic/oMsB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录