2013-03-14 6 views
5

Pracuję program winForm C# do wykrywania uśmiechu za pomocą kamery internetowej przy użyciu biblioteki EmguCV. Używam pliku haarcascade_smile xml, aby zrobić to pomyślnie. Jednak błąd wykrywania występuje w niektórych przypadkach: Czasami linia kształtu ust jest błędnie identyfikowana jako usta.Wykrywanie kolorów za pomocą C#

Mam nowy pomysł, który polega na wyszukiwaniu koloru czerwonego oprócz oryginalnego pliku xml, aby poprawić wykrywanie ust, i spróbować zmniejszyć współczynnik błędów.

Czy ktoś wie o komendzie lub bibliotece, której można użyć do wykrywania czerwonego koloru?

Dziękujemy :)

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

Dzięki za Twój ans. Ale chcę wykryć czerwony kolor zamiast analizować wykrywany piksel obrazu. – user1994617

Odpowiedz

0

Dzięki Bitmap.GetPixel() możesz uzyskać kolor piksela. Następnie należy określić, czy dany kolor jest uważany za czerwony. Jest to wyzwanie, które nie jest trudne do rozwiązania, ale może wymagać pewnych badań.

Na przykład, patrząc na HTML tabel kolorów i ich kodów, można już określić następujące cechy charakterystyczne dla większości kolorach czerwonym:

  • R elementem RGB wartość jest wyższa niż G i B.
  • Element jest mniejszy niż B przez większość czasu, czasami równy, ale nigdy wyższy.
  • W przypadku wysokiej wartości R im wyższa wartość, tym bardziej purpurowy; co jest dopuszczalne, a co nie?

Et cetera, et cetera. Możesz utworzyć klasę, która definiuje te zasady i sprawdzi, czy kolor jest uważany za czerwony dla konkretnego zastosowania.

Ponieważ dążysz do zawężenia zakresu czerwonych kolorów, możesz specjalizować klasę jeszcze bardziej i uzyskać bardziej precyzyjne odpowiedzi.