首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >emguCV 3.1 -人脸检测

emguCV 3.1 -人脸检测
EN

Stack Overflow用户
提问于 2016-02-15 01:03:43
回答 4查看 19.7K关注 0票数 3

我不熟悉C#中的OpenCV/EmguCV。我尝试了一个教程(http://fewtutorials.bravesites.com/entries/emgu-cv-c/level-3---live-face-detection),用摄像头捕捉视频很容易。现在我的问题是:本教程是为EmguCV 2.x编写的。我使用的是EmguCV 3.1 (我喜欢使用最新的)。因此,我使用类Mat而不是类Image<>Image<>类没有使用过capture.QueryFrame();,但是当我谈到人脸检测时,教程告诉我应该使用CascadeClassifierDetectHaarCascade类。CascadeClassifier被接受,但DetectHaarCascade未知。在我的5小时内!!搜索我刚刚发现,DetectHaarCascade已经过时了,但除了HaarCascade.Detect()之外,没有找到任何替代它的方法,这也是未知的。

我有以下几件事:

代码语言:javascript
复制
using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.Util;
using Emgu.CV.CvEnum;

所以,请帮助我: DetectHaarCascade的替代品是什么,我如何使用它?EmguCV 3.1有什么教程吗?

谢谢!!

EN

回答 4

Stack Overflow用户

发布于 2016-02-18 04:47:01

henne959,我也是emgu c#的新手--但在opencv领域有一些经验。首先要意识到的是它在进化。名字会变。因此,请保持开放的心态。我最近尝试了一下人脸检测c# (3.0),找到了你提到的教程。CascadeClassifier类就在那里。但是,我发现HAAR检测器(我想使用的)清单是该类的扩展: DetectMultiScale

在我研究这个主题时注意到的链接中-这两个是我最喜欢的(对不起-我没有更多链接的代表点) http://fewtutorials.bravesites.com/entries/emgu-cv-c/level-3c---how-to-improve-face-detection http://blogs.interknowlogy.com/2013/10/21/face-detection-for-net-using-emgucv/

这两行代码可能会帮助您将各个部分连接在一起

代码语言:javascript
复制
CascadeClassifier _cascadeClassifier = new CascadeClassifier(@"C:\OPENCV_3.0.0\opencv\build\etc\haarcascades\" + "haarcascade_frontalface_alt2.xml");

Rectangle RectFaces = _cascadeClassifier.DetectMultiScale(tMat, 1.03, 1, new Size(tMat.Width/13, tMat.Height/13), new Size((int)((double)tMat.Width/1.05), (int)((double)tMat.Width / 1.05)));

希望这能有所帮助!

票数 3
EN

Stack Overflow用户

发布于 2016-07-04 03:09:07

要将Mat转换为Image<>,请使用ToString()方法,并使用CascadeClassifier而不是HaarCascade

票数 2
EN

Stack Overflow用户

发布于 2017-02-22 06:46:04

看看example for face detection / DetectFace.cs:

重要的是:

代码语言:javascript
复制
using Emgu.CV;
using Emgu.CV.Structure;

和:

代码语言:javascript
复制
IInputArray image, 
String faceFileName, String eyeFileName,
List<Rectangle> faces
using( CascadeClassifier face = new CascadeClassifier( faceFileName ) )
{
    using( UMat ugray = new UMat() )
    {
        CvInvoke.CvtColor( image, ugray, Emgu.CV.CvEnum.ColorConversion.Bgr2Gray );

        //normalizes brightness and increases contrast of the image
        CvInvoke.EqualizeHist( ugray, ugray );

        //Detect the faces  from the gray scale image and store the locations as rectangle                   
        Rectangle[] facesDetected = face.DetectMultiScale(
           ugray, 1.1, 10, new Size( 20, 20 ) );

        faces.AddRange( facesDetected );
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35394522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档