2014-10-07 89 views
0

我写一个C#程序,我在C#中的小白区域,虽然我在节目是蛮好的,我知道C和C++。我的程序基本上扫描图像,并找到该图像中的圆,并根据其中心的坐标来区分它们。现在我想让它找到圆圈颜色的亮度。我认为这足以检查中心像素的亮度,甚至检查圆周上的一些像素。但到目前为止我还做不到。我尝试在颜色结构中使用GetBrightness()并获得HUE,但我无法指定我想要它工作的像素。我希望我明确表示并要求我提供更多细节。我会再次提到,我在C#中的菜鸟,我所知道的是C和C++检测像素的亮度或周围

回答

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;   
} 
+0

以及如何在使用此方法一个像素我指定?假设像素具有坐标50,100 – user3609643 2014-10-07 10:37:14

+0

您使用什么类来保持像素?如果您使用Bitmap类,那么你会使用[GetPixel(http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.getpixel(V = vs.110)的.aspx ) – jt000 2014-10-07 11:42:56

+0

我有一个数组中的X坐标和另一个数组中的Y坐标,它很容易从一个移动到另一个。它们不存储在一个类中。告诉我,我应该做的,没有必要进行彻底的细节我可以看看它 – user3609643 2014-10-07 11:54:03