检测像素或其周围区域的亮度

时间:2014-10-07 10:19:46

标签: c# colors detection system.drawing aforge

我正在编写一个c#程序,我是c#中的菜鸟,虽然我在编程方面很好,但我知道C和C ++。我的程序基本上扫描图像并定位该图像中的圆圈,并根据其中心的坐标区分它们。现在我想让它找到圆圈颜色的亮度。我认为它足以检查中心像素的亮度,甚至是围绕圆圈的一些像素。但到目前为止,我无法做到这一点。我尝试在颜色结构中使用GetBrightness()并获得HUE但我无法指定我想要它处理的像素。我希望自己清楚明白并向我询问更多细节。我将再次提到我是C#的菜鸟,我所知道的只有C和C ++

1 个答案:

答案 0 :(得分:0)

请查看此答案,了解从RGB值计算亮度的公式:Formula to determine brightness of RGB color

在C#中,这看起来像是:

public double GetBrightness(Color color)
{
    return (0.2126*color.R + 0.7152*color.G + 0.0722*color.B);
}

如果您想计算圆圈中所有颜色的亮度,那么您可以执行以下操作:

public double GetAverageBrightness(IEnumerable<Color> colors)
{
    int count = 0;
    double sumBrightness = 0;

    foreach (var color in colors)
    {
        count++;
        sumBrightness += GetBrightness(color);
    }

    return sumBrightness/count;        
}