Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# emguCV 3.1-人脸检测_C#_Opencv_Emgucv_Face Detection - Fatal编程技术网

C# emguCV 3.1-人脸检测

C# emguCV 3.1-人脸检测,c#,opencv,emgucv,face-detection,C#,Opencv,Emgucv,Face Detection,我是C#中OpenCV/EmguCV的新手。 我尝试了一个教程()和视频捕获与网络摄像头很容易。现在我的问题是: 本教程是为EmguCV 2.x编写的。我正在使用EmguCV 3.1(我喜欢使用最新版本)。因此,我使用classMat而不是classImage。类Image未与capture.QueryFrame()一起使用 但是当我谈到人脸检测时,教程说我应该使用类CascadeClassifier和detectharcascade级联分类器已被接受,但检测到ARCASCADE未知。 在我的5

我是C#中OpenCV/EmguCV的新手。 我尝试了一个教程()和视频捕获与网络摄像头很容易。现在我的问题是: 本教程是为EmguCV 2.x编写的。我正在使用EmguCV 3.1(我喜欢使用最新版本)。因此,我使用class
Mat
而不是class
Image
。类
Image
未与
capture.QueryFrame()一起使用
但是当我谈到人脸检测时,教程说我应该使用类
CascadeClassifier
detectharcascade
<代码>级联分类器
已被接受,但
检测到ARCASCADE
未知。 在我的5小时内!!搜索我刚刚发现,DetectAArcascade已经过时了,但是没有找到任何方法替换它,除了
HaarCascade.Detect()
,这也是未知的

我有以下攻击:

using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.Util;
using Emgu.CV.CvEnum;
那么,请帮助我:什么是Detectharcascade的替代品,我该如何使用它?EmguCV 3.1有教程吗

谢谢

Emgu.CV是一个开源项目。你可以在sourceforce.com上找到它。他们也有。您可以在计算机中克隆它

此存储库还包括示例项目(在Emgu.CV.Example文件夹中)


p、 我不能确切地告诉您需要哪个类,但是您可以检查名为FaceDetection的示例项目。他们正在使用级联分类器CudaCascadeClassifier类。希望这能有所帮助。

henne959,我对emgu c#也相当陌生,但对opencv领域有一点了解。首先要认识到的是,它是不断发展的。名字变了。所以保持开放的心态。我最近玩过人脸检测(la emgu c#(3.0))并找到了您提到的教程。级联分类器类就在那里。但是,我发现HAAR检测器(我想使用)清单是该类的扩展:DetectMultiScale

在我研究这个主题时注意到的链接中,这两个是我最喜欢的(对不起,我没有代表点来包含更多的链接)

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

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)));

希望这有帮助

要将
Mat
转换为
图像
请使用
ToString()
方法,并使用
cascade分类器
而不是
HaarCascade

查看/DetectFace.cs:

重要的是:

using Emgu.CV;
using Emgu.CV.Structure;
以及:

IInputArray图像,
字符串faceFileName,字符串eyeFileName,
列表面
使用(CascadeClassifier face=新的CascadeClassifier(faceFileName))
{
使用(UMat ugray=new UMat())
{
CvInvoke.CvtColor(图像、ugray、Emgu.CV.CvEnum.ColorConversion.Bgr2Gray);
//标准化亮度并增加图像的对比度
CvInvoke.EqualizeHist(ugray,ugray);
//从灰度图像中检测人脸,并将位置存储为矩形
矩形[]面检测=面检测多尺度(
ugray,1.1,10,新尺寸(20,20));
faces.AddRange(facesDetected);
}
}

谢谢!这就是我要找的东西!在我的搜索中,DetectHarCascade和detectmultiscale之间的链接丢失了…:-D
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 );
    }
}