C++ 函数将 RGB 彩色图像转换为灰度图
以下是一个将 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' 类型。
原文地址: https://www.cveoy.top/t/topic/oMsB 著作权归作者所有。请勿转载和采集!