使用C#进行颜色检测

时间:2013-03-14 07:57:03

标签: c# winforms emgucv

我正在开发一个winForm c#程序,使用EmguCV库通过网络摄像头进行微笑检测。我使用一些haarcascade_smile xml文件来成功完成。 但是,在某些情况下会发生检测错误:有时将嘴形线错误地识别为嘴。

我有一个新想法,即除了原始的xml文件之外还要寻找红色以改善口腔检测,并尝试降低错误率。

有没有人知道可以用来检测红色的命令或库?

非常感谢:)

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
{

}

2 个答案:

答案 0 :(得分:0)

Bitmap.Getpixel()可以获得指定像素的颜色。

答案 1 :(得分:0)

使用Bitmap.GetPixel(),您可以获得像素的颜色。然后,您必须确定该颜色是否被视为红色。这是一个不难解决的挑战,但可能需要一些研究。

例如,查看HTML颜色表及其代码,您已经可以确定大多数红色的以下特征:

  • RGB 值的 R 元素高于 G B
  • G 元素大部分时间都低于 B ,有时相等,但从不高。
  • 对于高 R 值, B 值越高,它变得越紫;什么是可以接受的,什么不可以?

等等,等等。您可以创建一个定义这些规则的类,并检查颜色是否被视为特定用途的红色。

由于您的目标是缩小红色范围,因此您可以更加专注于课程,并获得更精确的答案。