EmguCV - 将彩色图像转换为rg色度

时间:2016-11-24 06:57:59

标签: c# opencv image-processing emgucv

EmguCV是否提供任何内置函数将彩色图像转换为RG色度(see Wikipedia link)?

提前致谢。

1 个答案:

答案 0 :(得分:1)

至少在v3.1上我在EmguCV中找不到任何内置方法。所以,我最终做了旧方式。

Image<Bgr, Byte> img_live = Live_Mat.ToImage<Bgr, Byte>();
            for (int i = 0; i < Live_Mat.Height; i++)
            {
                for (int j = 0; j < Live_Mat.Width; j++)
                {
                    float blue = img_live.Data[i, j, 0];
                    float green = img_live.Data[i, j, 1];
                    float red = img_live.Data[i, j, 2];

                    double sum = red + blue + green;
                    double r = red / sum;
                    double g = green / sum;
                    double b = blue / sum;

                    if (sum == 0)
                    {
                        r = 0;
                        g = 0;
                        b = 0;
                    }


                    img_live.Data[i, j, 0] = System.Convert.ToByte(Math.Round((b * AWB_rgb_mult), 0));
                    img_live.Data[i, j, 1] = System.Convert.ToByte(Math.Round((g * AWB_rgb_mult), 0));
                    img_live.Data[i, j, 2] = System.Convert.ToByte(Math.Round((r * AWB_rgb_mult), 0));


            }