2013-03-14 3 views
5

Sto sviluppando un programma C# winForm per il rilevamento del sorriso con una webcam utilizzando la libreria EmguCV. Uso qualche file xml haarcascade_smile per farlo con successo. Tuttavia, in alcuni casi si verifica un errore di rilevamento: a volte la linea della bocca è erroneamente identificata come bocca.Rilevazione del colore usando C#

Ho una nuova idea, che è quella di cercare il colore rosso in aggiunta al file xml originale per migliorare il rilevamento della bocca e cercare di ridurre il tasso di errore.

Qualcuno conosce un comando o una libreria che può essere utilizzato per rilevare il colore rosso?

Molte grazie :)

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

Grazie per il tuo amico. Ma voglio rilevare il colore rosso piuttosto che analizzare il pixel dell'immagine rilevata. – user1994617

risposta

0

Con Bitmap.GetPixel() è possibile ottenere il colore del pixel. È quindi necessario determinare se il colore è considerato o meno rosso. Questa è una sfida che non è molto difficile da risolvere, ma potrebbe richiedere qualche ricerca.

Per esempio, guardando le tabelle dei colori HTML ed i loro codici, si può già determinare le seguenti caratteristiche per la maggior parte colori rosso:

  • Il R elemento del valore RGB è superiore G e B.
  • L'elemento G è inferiore a B il più delle volte, a volte uguale, ma mai più alto.
  • Per un valore alto R, maggiore è il valore B, più diventa viola; cosa è accettabile e cosa no?

Et cetera, eccetera. Puoi creare una classe che definisce queste regole e verificare se un colore è considerato rosso per un uso particolare.

Poiché si sta puntando a una gamma ristretta di colori rossi, è possibile specializzare ulteriormente la classe e ottenere risposte più precise.