彩色图像转换成灰度图像c语言
时间: 2023-06-19 15:04:50 浏览: 269
将彩色图像转换为灰度图像可以使用以下公式:
Gray = 0.299 * R + 0.587 * G + 0.114 * B
其中,R、G、B分别为红、绿、蓝三种颜色通道的像素值,Gray为灰度值。
下面是一个简单的C语言实现:
```c
void color2gray(unsigned char* colorImg, unsigned char* grayImg, int width, int height) {
int i, j;
unsigned char r, g, b;
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
r = colorImg[(i * width + j) * 3];
g = colorImg[(i * width + j) * 3 + 1];
b = colorImg[(i * width + j) * 3 + 2];
grayImg[i * width + j] = (unsigned char)(0.299 * r + 0.587 * g + 0.114 * b);
}
}
}
```
其中,colorImg为输入的彩色图像数组,grayImg为输出的灰度图像数组,width和height为图像的宽度和高度。这个函数会遍历每个像素,根据公式计算出灰度值并存储到grayImg中。注意,这里的彩色图像是RGB格式,每个像素占3个字节,分别表示红、绿、蓝三种颜色通道的像素值。
阅读全文