gpt4 book ai didi

c - 如何将灰度图像导入 C 中的二维矩阵?

转载 作者:行者123 更新时间:2023-11-30 15:21:09 26 4
gpt4 key购买 nike

我需要将 .bmp 灰度图像读入 2D 矩阵。矩阵上的值 (int) 将是图像上相应的灰度级别(从 0 到 255)。

更具体地说,假设我有一个 4x4 像素的 8 位灰度图像。

我想将其转换为二维矩阵,其值将是灰度级别,例如:

|0......2......4.......5 |

|10....11....12....10|

|210..200..150..98|

|1.....10....50.....88|

到目前为止,我已经成功将灰度图像导入到 3 矩阵(RGB)中,但是当我尝试使用转换因子将其转换为单个矩阵(灰度)时,它不起作用。图像变得与原始图像不同。

我使用的转换函数是:...

for (int i = 0; i < l; i++) 
for (int j = 0; j < c; j++)
{
b[i][j] = (int)(0.11*b[i][j] + 0.59*g[i][j] + 0.3*r[i][j]);
g[i][j] = b[i][j];
r[i][j] = g [i][j];
}
}

最佳答案

问题可能是由于char类型上的符号扩展造成的。如果将每个字节转换为 unsigned char 它应该可以工作。

b[i][j] = (int)(0.11*(unsigned char)b[i][j] + 0.59*(unsigned char)g[i][j] + 0.3*(unsigned char)r[i][j]);

编辑:刚刚注意到值已经是int,因此符号扩展已经发生。在这种情况下,只需将其屏蔽即可。

b[i][j] = (int)(0.11*(0xff&b[i][j]) + 0.59*(0xff&g[i][j]) + 0.3*(0xff&r[i][j]));

关于c - 如何将灰度图像导入 C 中的二维矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29675091/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com