I am writing a c# program and I am a noob in c#, although i am just fine in programming , i know C and C++. My program basically scans an image and locates the circle in that image and distinguishes them according to the coordinates of their centers. Now i want to make it find the brightness of the circle's color. i figured that it is enough to check the brightness of the center pixel, or even some pixels surrounding the circle too. But i couldn't do it so far. I tried using GetBrightness() in the color struct and get HUE but i couldn't specify what pixel i want it to work on. I hope i made myself clear and ask me for any more details. I will mention again that i am a noob in C# , all i know is C and C++
Asked
Active
Viewed 3,277 times
1 Answers
2
Take a look at this answer for the formula to calculate brightness from an RGB value: Formula to determine brightness of RGB color
In C# this would look something like:
public double GetBrightness(Color color)
{
return (0.2126*color.R + 0.7152*color.G + 0.0722*color.B);
}
If you wanted to calculate the brightness of all colors in a circle, then you could do something like:
public double GetAverageBrightness(IEnumerable<Color> colors)
{
int count = 0;
double sumBrightness = 0;
foreach (var color in colors)
{
count++;
sumBrightness += GetBrightness(color);
}
return sumBrightness/count;
}
-
and how to use this method on a pixel I specify? let's say the pixel has the coordinates 50,100 – user3609643 Oct 07 '14 at 10:37
-
What class are you using to hold the pixels? If you're using the Bitmap class, then you'd use [GetPixel](http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.getpixel(v=vs.110).aspx) – jt000 Oct 07 '14 at 11:42
-
i have the X coordinates in an array and the Y coordinates in another array, it is easy to move from one to another. They are not stored in a class. Tell me what i should do, no need for thorough details i can look it up – user3609643 Oct 07 '14 at 11:54
-
Sounds to me like you haven't loaded the image. For this take a look at the [Bitmap class](http://msdn.microsoft.com/en-us/library/0cbhe98f(v=vs.110).aspx). Then you can call GetPixel on the X\Y coordinates that you have stored in your arrays. – jt000 Oct 07 '14 at 12:57
-
well i figured it out, the GetPixel method solved everything :D :D thank you bro @jaytre – user3609643 Oct 08 '14 at 07:23