2013-03-14 85 views
5

Tôi đang phát triển chương trình winForm C# để phát hiện nụ cười bằng webcam bằng cách sử dụng thư viện EmguCV. Tôi sử dụng một số tập tin xml haarcascade_smile để làm điều đó thành công. Tuy nhiên, một lỗi phát hiện xảy ra trong một số trường hợp: Đôi khi dòng hình dạng miệng được xác định sai là miệng.Phát hiện màu bằng cách sử dụng C#

Tôi có một ý tưởng mới, đó là tìm màu đỏ ngoài tệp gốc xml để cải thiện khả năng phát hiện miệng và cố gắng giảm tỷ lệ lỗi.

Có ai biết lệnh hoặc thư viện có thể được sử dụng để phát hiện màu đỏ không?

Rất cám ơn :)

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

Cảm ơn ans của bạn. Nhưng tôi muốn phát hiện màu đỏ hơn là phân tích pixel hình ảnh được phát hiện. – user1994617

Trả lời

0

Với Bitmap.GetPixel() bạn có thể nhận được màu của pixel. Sau đó, bạn phải xác định xem màu đó có được coi là màu đỏ hay không. Đây là một thách thức mà không phải là rất khó để giải quyết, nhưng có thể yêu cầu một số nghiên cứu.

Ví dụ, nhìn vào bảng màu HTML và mã của họ, bạn đã có thể xác định các đặc điểm sau đối với hầu hết màu đỏ:

  • Các R yếu tố của giá trị RGB cao hơn GB.
  • Phần tử G thấp hơn B phần lớn thời gian, đôi khi bằng nhau, nhưng không bao giờ cao hơn.
  • Để có giá trị cao R, giá trị B càng cao, giá trị càng trở nên màu tía; những gì được chấp nhận và những gì không?

Et cetera, et cetera. Bạn có thể tạo một lớp xác định các quy tắc này và kiểm tra xem một màu được coi là màu đỏ cho bạn sử dụng cụ thể hay không.

Vì bạn đang nhắm đến một phạm vi hẹp màu đỏ, bạn có thể chuyên lớp này nhiều hơn và nhận được câu trả lời chính xác hơn.

0

Bitmap.Getpixel() sẽ giúp bạn có được màu sắc của một điểm ảnh theo quy định.