EmguCV - 将彩色图像转换为 rg 色度
EmguCV - Convert color image to rg chromaticity
EmguCV 是否提供将彩色图像转换为 RG 色度 (see Wikipedia link) 的内置函数?
提前致谢。
至少在 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));
}
EmguCV 是否提供将彩色图像转换为 RG 色度 (see Wikipedia link) 的内置函数?
提前致谢。
至少在 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));
}