Laden...

Color in Double-Wert umwandeln

Erstellt von digi333 vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.579 Views
D
digi333 Themenstarter:in
290 Beiträge seit 2006
vor 16 Jahren
Color in Double-Wert umwandeln

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!

5.658 Beiträge seit 2006
vor 16 Jahren

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

D
digi333 Themenstarter:in
290 Beiträge seit 2006
vor 16 Jahren

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).

5.658 Beiträge seit 2006
vor 16 Jahren

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

D
digi333 Themenstarter:in
290 Beiträge seit 2006
vor 16 Jahren

Du hast recht... der Datentyp war von mir global definiert. Danke!

D
digi333 Themenstarter:in
290 Beiträge seit 2006
vor 16 Jahren

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;

D
digi333 Themenstarter:in
290 Beiträge seit 2006
vor 16 Jahren

Frage ist geklärt

5.658 Beiträge seit 2006
vor 16 Jahren

Wäre nett, wenn du die Lösung auch hier kurz posten könntest.

Weeks of programming can save you hours of planning