3

我已经通过 C++ Visual Studio 2010 的这个链接运行了这个 Opencv Haarlike 眼睛检测

http://docs.opencv.org/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html

而且我的相机运行不顺畅。所以我删除了for循环(这段代码),只运行相机。相机运行平稳。

问题是我是否要修改此代码以检测眼睛和面部。

如何修改此代码以顺利运行?

请显示修改此代码的示例。

最好的感谢和抱歉糟糕的语言Chairat(泰国)

4

1 回答 1

6

一般来说,这不是一个微不足道的问题,但一个基本的想法(我用于我的 BSc 论文)非常简单。这不是我使用的全部解决方案,但现在应该足够了,如果没有的话 - 让我知道我会写更多关于它的内容。
对于第一帧:

  1. 找脸(我用过haarcascade_frontalface_default.xml级联,但你可以尝试不同的)并记住它的位置。
  2. 在面部矩形内找到眼睛(使用 Haar 级联作为眼睛对 ( haarcascade_mcs_eyepair_big.xml),而不是一只眼睛 - 这是更快、更简单的解决方案)并记住位置。

对于其他框架:

  1. 展开(大约 20-50%)您最近发现人脸的矩形。
  2. 在扩展的矩形中查找人脸。
  3. 在脸上找到眼睛。如果您在上一步中没有找到人脸,您可以尝试在之前眼睛位置的扩展矩形中搜索眼睛。



几个重要的事情:

  • 在搜索使用CV_HAAR_FIND_BIGGEST_OBJECT标志时。
  • 在搜索之前将帧转换为灰度 - 在搜索期间,opencv 仅使用灰度图像,因此转换整个图像一次比转换整个图像(对于第一次搜索 - 面部)和只转换包含面部的矩形(对于第二次搜索 - 眼睛)更快
  • 有人说在搜索之前均衡直方图可能会改善结果,我不确定,但如果你愿意,你可以试试这个 - 使用equalizeHist函数。请注意,它仅适用于灰度图像。
于 2013-04-21T13:51:42.823 回答