我正在研究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找到了这段代码。任何人都可以建议我应该怎么做才能找到面孔的特征。
答案 0 :(得分:1)
简单的解决方案是预先训练好的分类器"微笑探测器"。
String smile_cascade_name =" haarcascades \ haarcascade_smile.xml";
我不记得" haarcascade_smile.xml"与Emgu一起来。如果没有,它可能带有opencv源代码。 https://github.com/opencv/opencv/tree/master/data/haarcascades
努力训练的是自己训练。这非常复杂。你可以去ImageNet下载所有的微笑图片,悲伤的图片和其他情感,然后使用opencv的内置" opencv_traincascade"功能。http://coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html。有时它花了我2周的时间训练一个分类器。
您可以在EMGU代码中使用受opencv训练的xml。