我对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很陌生并且已经进行了几周的眉毛检测 - 有人可以建议我怎样才能做到这一点吗?
非常感谢任何帮助或建议。 :)
答案 0 :(得分:3)
Hough Lines和Canny Edge对于眉毛并没有什么好处,也没有用于眉毛的Haar探测器。你可以尝试制作自己的,但这不是一个可取的方法。您通过检测图像中的眼睛完成了大部分工作。您现在可以采取的最佳方法是从彩色图像中获取每只眼睛上方的ROI。然后使用颜色分析来检测眉毛。从这个ROI你应该能够从每个角落检测皮肤的颜色。
使用此数据,您可以扫描此投资回报率,并且任何不在阈值范围内的数据表示值为+ - 10%,那么您可以将其视为眉毛数据。显然,这需要一点点努力才能完成工作。尝试不同的图像类型,如HSV方式可以提高准确性。
如果您需要任何关于代码的帮助,请告诉我,我会为您排序。我回答了类似的问题,在opencv中将脸部的皮肤分割成颈部,这可能是一个很好的参考。 EmguCV Cut Face+Neck Skin Only And Save New Image
我希望这有帮助,
干杯,
克里斯