使用C#进行颜色检测

use*_*617 5 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
{

}
Run Code Online (Sandbox Code Playgroud)

Joh*_*mse 0

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

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

  • RGB值的R元素高于GB
  • G元素大多数时候低于B ,有时相等,但绝不会更高。
  • R值越高, B值越高,变得越紫;什么是可以接受的,什么是不能接受的?

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

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