2014-10-07 90 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