Ich verwende die Methode ToColorArray() aus der Klasse FastBitmap. Jetzt möchte ich gerne die Farbwerte aufsummieren und den Mittelwert als Double-Wert übergeben. Wie geht das???
frame_pic = new FastBitmap(frame.Width, frame.Height, PixelFormat.Format24bppRgb);
// Gibt ein 2-Dimensionales Color Array zurück, welches das Bild darstellt
colArray = frame_pic.ToColorArray();
double value = 0;
for (int x = 0; x < frame.Width; x++)
{
for (int y = 0; y < frame.Height; y++)
{
value += colArray[x, y];
}
}
Danke!
du hast vergessen, am Ende durch die Anzahl der Pixel zu teilen.
http://de.wikipedia.org/wiki/Mittelwert#Arithmetisches_Mittel
value /= frame.Width * frame.Height;
Übrigens ist "value" ein C# Schlüsselwort, evtl. solltest du die Variable umbenennen zwecks besserer Lesbarkeit.
Schöne Grüße,
Christian
Weeks of programming can save you hours of planning
Das ist mir schon klar wie man einen Mittelwert berechnet, aber colArray ist vom Typ Color und ich möchte gerne diesen in einen Daouble-Wert umwandeln (da meckert er).
Das geht nicht aus deinem Quelltext hervor.
Den Colorwert kannst du aber in ein Int32 umwandeln (.ToInt32() oder sowas) und das wiederum kannst du als double casten.
Weeks of programming can save you hours of planning
Eine Frage hab ich noch wie bekomme ich den Datentyp bmp.FastBitmap in Bitmap umgewandelt???
frame_pic = new FastBitmap(frame.Width, frame.Height, PixelFormat.Format24bppRgb);
//Problem: frame_pic hat ja nicht die Methoden von Bitmap -> Vererbung?
Bitmap bmp = new Bitmap(frame_pic); ?????????????
BitmapData bmpdata = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
void* picout = (void*)bmpdata.Scan0;
Wäre nett, wenn du die Lösung auch hier kurz posten könntest.
Weeks of programming can save you hours of planning