c# - 使用 OpenCV/EmguCV 提高人脸检测性能

标签 c# opencv computer-vision emgucv face-detection

我目前正在使用 EmguCV(OpenCV C# 包装器)成功地实时检测人脸(网络摄像头)。我得到大约 7 FPS。

现在我正在寻求提高性能(并节省 CPU 周期),并且正在寻找选项,这是我的想法:

  • 检测人脸,提取人脸特征,并尝试在下一帧中找到这些特征(使用 SURF 算法),这样就变成了“人脸检测+跟踪”。如果没有找到,再次使用人脸检测。

  • 检测人脸,在下一帧中,尝试在人脸之前所在的 ROI 中检测人脸(即在图像的较小部分中寻找人脸)。如果找不到人脸,请尝试再次在整个图像中寻找它。

  • 侧面想法:如果在 2-3 帧内未检测到人脸,并且图像中没有移动,则在检测到移动之前不要尝试检测更多人脸。

你对我有什么建议吗?

谢谢。

最佳答案

您介绍的所有解决方案似乎都很聪明且合理。但是,如果您使用 Haar 进行人脸检测,您可能会尝试创建一个阶段较少的级联。虽然建议将 20 个阶段用于人脸检测,但 10-15 个阶段可能就足够了。这将显着提高性能。有关创建自己的级联的信息,请访问 Tutorial: OpenCV haartraining (Rapid Object Detection With A Cascade of Boosted Classifiers Based on Haar-like Features)。 .

同样,使用 SURF 是个好主意。你也可以试试 P-N learning: Bootstrapping binary classifiers by structural constraints . YouTube 上有介绍此方法的有趣视频,请尝试找到它们。

关于c# - 使用 OpenCV/EmguCV 提高人脸检测性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6709673/

相关文章:

c++ - 如何匹配轮廓以检测图像上字母的 ASCII?

image - 使用opencv将变量放在图像上

c# - 如何在 C# 中将 DataRowView 转换为 DataRow

c# - 比赛收集超时

c# - 命令模式 : Any point in OOP? 的丑陋体验

c# - Identity Server 4 使用 IConfiguration 创建客户端

image-processing - 使用opencv在c中进行手部检测从kinect设备捕获视频

python - 多尺度模板匹配不正确

python - 使用 opencv - python 检测 W2 中的单个框

ios - 将 Vision boundingBox 从 VNFaceObservation 转换为矩形以在图像上绘制