2011-10-11 147 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

我希望這有助於

乾杯,

克里斯