检测脸部眉毛[EMGU CV / Open CV / C#]

时间:2011-10-11 03:53:04

标签: c# opencv emgucv

我对Emgu CV很新,我已经完全测试了大部分代码,例如Hough Lines / Canny Edge检测和googled文件,但我仍然不知所措。

这就是我所做的

1)用HaarCascading检测正面 2)打破面部的特定区域(以防止误报并节省CPU能力),并检测指定区域的眼睛,鼻子,嘴巴。

我想要做的还是检测眉毛。我找不到HaarCascades的眉毛,我可以在上面添加一个特定的区域,扫描眉毛。我已经测试了Hough Lines和Canny Edge,但我无法检测眉毛(它检测到我脸上的其他部分为线条)。

Gray cannyThreshold = new Gray(255);

Gray cannyThresholdLinking = new Gray(0);

Image<Gray, Byte> gray = grayFrame.Convert<Gray, Byte>().PyrDown().PyrUp();

Image<Gray, Byte> cannyEdges = gray.Canny(cannyThreshold, cannyThresholdLinking);

            LineSegment2D[] lines = cannyEdges.HoughLines(
                cannyThreshold,
                cannyThresholdLinking,
                1, //Distance resolution in pixel-related units
                Math.PI / 45.0, //Angle resolution measured in radians.
                1, //threshold
                10, //min Line width
                3 //gap between lines
                )[0]; //Get the lines from the first channel
            List<MCvBox2D> boxList = new List<MCvBox2D>();

            foreach (LineSegment2D line in lines)
            {
                frame.Draw(line, new Bgr(Color.Green), 2);
            }

我对EMGU CV很陌生并且已经进行了几周的眉毛检测 - 有人可以建议我怎样才能做到这一点吗?

非常感谢任何帮助或建议。 :)

1 个答案:

答案 0 :(得分:3)

Hough Lines和Canny Edge对于眉毛并没有什么好处,也没有用于眉毛的Haar探测器。你可以尝试制作自己的,但这不是一个可取的方法。您通过检测图像中的眼睛完成了大部分工作。您现在可以采取的最佳方法是从彩色图像中获取每只眼睛上方的ROI。然后使用颜色分析来检测眉毛。从这个ROI你应该能够从每个角落检测皮肤的颜色。

使用此数据,您可以扫描此投资回报率,并且任何不在阈值范围内的数据表示值为+ - 10%,那么您可以将其视为眉毛数据。显然,这需要一点点努力才能完成工作。尝试不同的图像类型,如HSV方式可以提高准确性。

如果您需要任何关于代码的帮助,请告诉我,我会为您排序。我回答了类似的问题,在opencv中将脸部的皮肤分割成颈部,这可能是一个很好的参考。 EmguCV Cut Face+Neck Skin Only And Save New Image

我希望这有帮助,

干杯,

克里斯