用c#进行颜色检测

本文关键字:颜色 检测 | 更新日期: 2023-09-27 18:03:54

我正在开发一个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
{
}

用c#进行颜色检测

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

例如,查看HTML颜色表及其代码,您已经可以确定大多数红色的以下特征:
  • RGB值的R元素高于GB
  • G元素在大多数情况下低于B,有时相等,但从不高于。
  • R值较高时,B值越高,紫色越明显;什么是可接受的,什么是不可接受的?

等等,等等。你可以创建一个类来定义这些规则,并检查一种颜色是否被认为是红色。

既然你的目标是缩小红色的范围,你可以更专门化类,得到更精确的答案

Bitmap.Getpixel()将获取指定像素的颜色