2013-03-14 4 views
5

Ich entwickle ein WinForm C# -Programm zur Lächelerkennung mit einer Webcam unter Verwendung der EmguCV-Bibliothek. Ich verwende einige xml-Dateien von haarcascade_smile, um es erfolgreich zu machen. In einigen Fällen tritt jedoch ein Erkennungsfehler auf: Manchmal wird die Mundformlinie fälschlicherweise als Mund erkannt.Farberkennung mit C#

Ich habe eine neue Idee, die neben der ursprünglichen XML-Datei nach der Farbe rot suchen soll, um die Munderkennung zu verbessern, und versuche, die Fehlerrate zu reduzieren.

Kennt jemand einen Befehl oder eine Bibliothek, die verwendet werden kann, um rote Farbe zu erkennen?

Vielen Dank :)

var smiles = grayframe.DetectHaarCascade(_smiles, 
             ScaleIncreaseRate, 
             MinNeighbors, 
             HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, 
             new Size(WindowsSize, WindowsSize))[0]; 
if (smiles.Length == 0) 
{ 
    // Number of smile face detected is 0 
} 
else 
{ 

} 
+0

Danke für Ihr ans. Aber ich möchte die rote Farbe erkennen, anstatt das erkannte Bildpixel zu analysieren. – user1994617

Antwort

0

Mit Bitmap.GetPixel() können Sie die Farbe des Pixels erhalten. Sie müssen dann bestimmen, ob diese Farbe rot gilt. Dies ist eine Herausforderung, die nicht sehr schwer zu lösen ist, aber möglicherweise einige Nachforschungen erfordert.

Zum Beispiel suchen Sie in HTML-Farbtabellen und ihre Codes, können Sie bereits bestimmen die folgenden Eigenschaften für die meisten roten Farben:

  • Das R Element des RGB Wert höher als G und B.
  • Das G Element ist niedriger als B die meiste Zeit, manchmal gleich, aber nie höher.
  • Für einen hohen Wert R Wert, je höher der Wert B Wert ist, desto mehr lila wird es; Was ist akzeptabel und was nicht?

Et cetera, et cetera. Sie können eine Klasse erstellen, die diese Regeln definiert und überprüft, ob eine Farbe für Ihre spezielle Verwendung als rot angesehen wird.

Da Sie eine engere Auswahl an roten Farben anstreben, können Sie die Klasse noch spezialisieren und genauere Antworten erhalten.