检测像素或其周围区域的亮度 我写C程序,我是C语言中的NOOB,虽然我的编程很好,但我知道C和C++。我的程序基本上扫描一幅图像,定位图像中的圆,并根据圆心的坐标区分它们。现在我想让它找到圆圈颜色的亮度。我认为检查中心像素的亮度就足够了,甚至可以检查圆周围的一些像素。但到目前为止我还没能做到。我尝试在颜色结构中使用GetBrightness()并获取色调,但无法指定要使用的像素。我希望我说清楚了,并问我更多的细节。我要再次提到,我是C#中的一个noob,我所知道的只是C和C++

检测像素或其周围区域的亮度 我写C程序,我是C语言中的NOOB,虽然我的编程很好,但我知道C和C++。我的程序基本上扫描一幅图像,定位图像中的圆,并根据圆心的坐标区分它们。现在我想让它找到圆圈颜色的亮度。我认为检查中心像素的亮度就足够了,甚至可以检查圆周围的一些像素。但到目前为止我还没能做到。我尝试在颜色结构中使用GetBrightness()并获取色调,但无法指定要使用的像素。我希望我说清楚了,并问我更多的细节。我要再次提到,我是C#中的一个noob,我所知道的只是C和C++,c#,colors,detection,system.drawing,aforge,C#,Colors,Detection,System.drawing,Aforge,看看这个答案,从RGB值计算亮度的公式: 在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 sumBrigh

看看这个答案,从RGB值计算亮度的公式:

在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;        
}
如果要计算圆中所有颜色的亮度,可以执行以下操作:

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;        
}
public double GetAverage亮度(IEnumerable colors)
{
整数计数=0;
双亮度=0;
foreach(颜色中的颜色变量)
{
计数++;
sumBrightness+=GetBrightness(颜色);
}
返回亮度/计数;
}

如何在我指定的像素上使用此方法?假设像素具有坐标50100,您使用什么类来保存像素?如果您使用的是位图类,那么您将使用数组中的X坐标和另一个数组中的Y坐标,很容易从一个数组移动到另一个数组。它们不存储在类中。告诉我我该怎么做,不需要详细的细节,我可以把它看得像你没有加载图像一样。对于这一点,请查看。然后,您可以在存储在数组中的X\Y坐标上调用GetPixel。我发现,GetPixel方法解决了所有问题:D:D谢谢兄弟@jaytre