我正在开发一个 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元素高于G和B。
- G 元素在大多数情况下低于 B,有时相等,但绝不会高于。
- 对于高R值,B值越高,它变得越紫;什么是可以接受的,什么不是?
等等,等等。您可以创建一个定义这些规则的类,并检查某种颜色是否被认为适合您的特定用途。
由于您的目标是缩小范围内的红色,因此您可以更加特化类(class)并获得更精确的答案。
关于c# - 使用C#进行颜色检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15403898/