这是我用来将一个YCbCr值转换为一个RGB像素的方法。
r = Math.Max(0.0f, Math.Min(1.0f, (float)(ycbcr.Y + 0.0000 * ycbcr.Cb + 1.4022 * ycbcr.Cr)));
g = Math.Max(0.0f, Math.Min(1.0f, (float)(ycbcr.Y - 0.3456 * ycbcr.Cb - 0.7145 * ycbcr.Cr)));
b = Math.Max(0.0f, Math.Min(1.0f, (float)(ycbcr.Y + 1.7710 * ycbcr.Cb + 0.0000 * ycbcr.Cr)));
return new Rgb((byte)(r * 255), (byte)(g * 255), (byte)(b * 255));
当我尝试简单地将g和b作为0并且将r作为ycbcr.Cr
值返回时,我得到了这个。
这是对的吗?
编辑:在右边你看到了这个效果。
r = Math.Max(0.0f, Math.Min(1.0f, (float)(ycbcr.Cr)));
g = 0.0f;
b = 0.0f;
return new Rgb((byte)(r * 255), (byte)(g * 255), (byte)(b * 255));