如何使用emgucv检测面部和嘴部后的面部特征

时间:2017-07-26 06:30:38

标签: c# emgucv

我正在研究c#中的情绪检测,因为通过使用emgucv和haarcascades xml我检测到了嘴巴和眼睛,现在如何判断脸部的情绪是什么用于检测我使用此代码

var faces = grayframe.DetectHaarCascade(
                        haar, 1.4, 4,
                        HAAR_DETECTION_TYPE.DO_CANNY_PRUNING,
                        new Size(nextFrame.Width / 8, nextFrame.Height / 8)
                        )[0];
  foreach (var f in faces)
  {    
  image.Draw(f.rect, new Bgr(Color.Blue), 2);    
    gray.ROI = f.rect;
 var mouthsDetected = gray.DetectHaarCascade(mouth, 
                          1.1, 10, 
                          Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, 
                          new Size(20, 20));
 gray.ROI = Rectangle.Empty;


 foreach (var m in mouthsDetected [0])
 {
      Rectangle mouthRect = m.rect;
      mouthRect.Offset(f.rect.X, f.rect.Y);
      image.Draw(mouthRect , new Bgr(Color.Red), 2);
 }

}

我从here找到了这段代码。任何人都可以建议我应该怎么做才能找到面孔的特征。

1 个答案:

答案 0 :(得分:1)

  1. 简单的解决方案是预先训练好的分类器"微笑探测器"。

    String smile_cascade_name =" haarcascades \ haarcascade_smile.xml";

    我不记得" haarcascade_smile.xml"与Emgu一起来。如果没有,它可能带有opencv源代码。 https://github.com/opencv/opencv/tree/master/data/haarcascades

  2. 努力训练的是自己训练。这非常复杂。你可以去ImageNet下载所有的微笑图片,悲伤的图片和其他情感,然后使用opencv的内置" opencv_traincascade"功能。http://coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html。有时它花了我2周的时间训练一个分类器。

  3. 您可以在EMGU代码中使用受opencv训练的xml。