c# - 使用C#进行颜色检测

标签 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
{

}

最佳答案

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

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

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

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

由于您的目标是缩小范围内的红色,因此您可以更加特化类(class)并获得更精确的答案。

关于c# - 使用C#进行颜色检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15403898/

相关文章:

c# - 为 VS UT 断言类创建自定义扩展方法的最佳方法是什么?

javascript - 连续检查各个复选框

c# - System.Web.Hosting.HostingEnvironment.Cache 是否等于 HttpContext.Current.Cache?

c# - 选择组合框/文本框时选择ListView项目WPF MVVM

c# - 关于 ToolStripMenuItem

c# - 从c#插入数据库

c# - Emgu/Opencv 中的连通分量标记

c# - EmguCV:使用光流在运动中的物体上绘制轮廓?

c# - 使用 SystemEvents.UserPreferenceChanged 和多个 UI 线程时 UI 卡住

opencv - 使用 Emgu CV 从图像中找到最突出的颜色