代码之家  ›  专栏  ›  技术社区  ›  Anoop Mishra

如何在使用emgucv检测人脸和嘴巴后确定人脸特征

  •  2
  • Anoop Mishra  · 技术社区  · 8 年前

    我正在用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 回复  |  直到 8 年前
        1
  •  1
  •   jjw    8 年前
    1. 简单的解决方案是预先训练的分类器“微笑检测器”。

      String smile\u cascade\u name=“haarcascades\haarcascade\u smile.xml”;

      我不记得“haarcascade_smile.xml”是否与Emgu一起提供。如果没有,它可能附带opencv源代码。 https://github.com/opencv/opencv/tree/master/data/haarcascades

    2. 最难的是自己训练。这很有意思。你可以去ImageNet下载所有的微笑图片、悲伤图片和其他情绪,然后使用opencv内置的“opencv\u traincascade”功能对其进行训练。 http://coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html

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