C++ 将字节数转换为灰度,反之亦然

C++ 将字节数转换为灰度,反之亦然,c++,rgb,C++,Rgb,我得到一个介于0-255之间的数字,需要将其转换为RGB灰度颜色。如何将RGB颜色转换为介于0-255之间的灰度值?常用公式是亮度=0.30*红色+0.59*绿色+0.11*蓝色。匹配人眼的颜色感知,否则不适合显示设备gamma。如果你有一个数字0,你的数字(0-255)如何表示颜色?从遮罩到图片,遮罩像素越暗,像素越透明。现在用RGB(255255)表示,但我需要将它转换为0-255之间的值。你不认为这个公式已经应用了吗?为什么你认为简单的平均值是不够的?不,RGB总是代表设备颜色。人眼的非线

我得到一个介于0-255之间的数字,需要将其转换为RGB灰度颜色。如何将RGB颜色转换为介于0-255之间的灰度值?

常用公式是亮度=0.30*红色+0.59*绿色+0.11*蓝色。匹配人眼的颜色感知,否则不适合显示设备gamma。

如果你有一个数字
0,你的数字(0-255)如何表示颜色?从遮罩到图片,遮罩像素越暗,像素越透明。现在用RGB(255255)表示,但我需要将它转换为0-255之间的值。你不认为这个公式已经应用了吗?为什么你认为简单的平均值是不够的?不,RGB总是代表设备颜色。人眼的非线性很容易看到(双关语),完全饱和的蓝色(0,0255)看起来比完全饱和的绿色(0,255,0)暗得多。如此之暗以至于它是死亡蓝屏的背景色。RGB颜色的强度不是线性变化的,而是由显示系统校正的。软件中不需要再这样做。我用过的任何显示器(128128)都不是很暗。然而,原始图像通常已进行伽马校正,因此无需进行额外校正。彩色显示非常棘手。