Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Color in Double-Wert umwandeln
digi333
myCSharp.de - Member



Dabei seit:
Beiträge: 302

Themenstarter:

Color in Double-Wert umwandeln

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5966
Herkunft: Leipzig

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
digi333
myCSharp.de - Member



Dabei seit:
Beiträge: 302

Themenstarter:

beantworten | zitieren | melden

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).
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5966
Herkunft: Leipzig

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
digi333
myCSharp.de - Member



Dabei seit:
Beiträge: 302

Themenstarter:

beantworten | zitieren | melden

Du hast recht... der Datentyp war von mir global definiert. Danke!
private Nachricht | Beiträge des Benutzers
digi333
myCSharp.de - Member



Dabei seit:
Beiträge: 302

Themenstarter:

beantworten | zitieren | melden

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;
private Nachricht | Beiträge des Benutzers
digi333
myCSharp.de - Member



Dabei seit:
Beiträge: 302

Themenstarter:

beantworten | zitieren | melden

Frage ist geklärt
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5966
Herkunft: Leipzig

beantworten | zitieren | melden

Wäre nett, wenn du die Lösung auch hier kurz posten könntest.
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers