我在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
答案 0 :(得分:1)
与Stack Overflow一样,我在发布问题后几秒钟找到了(部分)解决方案。
似乎导致问题的是条件陈述if (nextFrame != null)
。我不知道这是否与我的网络摄像头的刷新率或timer1
点击率有关。删除它现在可以检测到面部,但我需要使用DetectMultiScale
方法的参数,因为只有在完全面朝上且非常接近时才会检测到它们。
如果有人能够进一步阐明这一点,请成为我的客人;但是,它有效,这对我来说非常重要。如果您来这里是为了使用Emgu.CV 3.1进行面部检测的示例,请尝试使用上述代码而不使用该条件语句。