2011-10-11 146 views
0

我对Emgu CV很新颖,我绝对测试过大部分代码,例如Hough Lines/Canny Edge检测和Google纸质书,但我仍然不知所措。检测脸部的眉毛[EMGU CV/Open CV/C#]

这是我做了什么

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简历,并在此眉检测工作了几个星期 - 任何人可以请告知我如何能够做到这一点?

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

回答

3

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

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

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

我希望这有助于

干杯,

克里斯