使用Emgu.CV从网络摄像头检测面部(C#)

时间:2017-05-09 14:19:28

标签: c# emgucv face-detection

我在C#中构建测试应用程序以检测来自网络摄像头的面孔和

我已将其构建为带有计时器(timer1)的Windows窗体,用于显示网络摄像头输出的图片框(pictureBox1)和用于显示面部数量的文本框( textBox2)。我已经通过NuGet(v3.1.0.1)安装了EmguCV并设置了所有内容。 EmguCV的大多数教程都是针对早期版本的,并且已经折旧了必要的HaarCascade类。但是,this Stack Overflow question为我提供了必要的代码更新。

我现在已经准备好了所有工作。网络摄像头在pictureBox1中显示更新图像。每次timer1滴答时,检测器假定在网络摄像头帧上工作,Faces[]数组中的矩形数作为字符串输出到{{1} }。然而,似乎没有任何工作。我不能让它识别任何东西。程序正在运行,但检测到的面数始终为0.如果我最初将textBox2变量设置为类似5,则Emgu代码会在输出中将其更改为0。所以,事情正在发生。我使用EmguCV提供的haar xml,但无济于事。有谁能够帮我?

下面的代码转储:

NumberOfFaces

1 个答案:

答案 0 :(得分:1)

与Stack Overflow一样,我在发布问题后几秒钟找到了(部分)解决方案。

似乎导致问题的是条件陈述if (nextFrame != null)。我不知道这是否与我的网络摄像头的刷新率或timer1点击率有关。删除它现在可以检测到面部,但我需要使用DetectMultiScale方法的参数,因为只有在完全面朝上且非常接近时才会检测到它们。

如果有人能够进一步阐明这一点,请成为我的客人;但是,它有效,这对我来说非常重要。如果您来这里是为了使用Emgu.CV 3.1进行面部检测的示例,请尝试使用上述代码而不使用该条件语句。