代码之家  ›  专栏  ›  技术社区  ›  AtanuCSE jpd

闭眼检测opencv C++

  •  6
  • AtanuCSE jpd  · 技术社区  · 13 年前

    我只需要检测闭着的眼睛,也需要分别检测两只眼睛。这意味着我需要判断左眼是睁开还是闭着,右眼也是如此。

    我尝试了几种方法。其中之一是分别用haarcascade_eye和haarcascade _eye ree_eye眼镜检测眼睛,然后比较结果。如果两者都能检测到眼睛,那就睁开眼睛;如果其中一个检测到,另一个检测不到,那就闭上眼睛。此技巧取自此链接:

    http://tech.groups.yahoo.com/group/OpenCV/messages/87666?threaded=1&m=e&var=1&tidx=1

    但它并没有像预期的那样工作。眼睛级联检测器并没有像链接中提到的那样工作。与我上面提到的那些haarcascade有很多相似的结果。有时它给出了正确的结果,有时却不能。我不知道为什么。此外,用这种方法无法判断哪只眼睛睁开了,哪只眼睛闭上了。

    现在有人能帮我解决这个问题吗??至少我需要一种方法来判断其中一只眼睛是闭着的,无论是哪一只,并且需要准确地做到这一点。请帮忙。。。。。。。

    1 回复  |  直到 13 年前
        1
  •  1
  •   dvhamme    13 年前

    如果你想避免训练自己的Haar级联来检测单眼,你可以尝试更简单的技术,比如瞳孔检测。如果你没有检测到一个黑色圆圈,那么眼睛就闭上了。如果你有一个感兴趣的小区域,这可能非常有效。另一种选择是眼睛区域的颜色直方图,这在打开和关闭状态下可能看起来非常不同。

    如果你不能合理准确地预测图像中眼睛的位置,这些方法就注定要失败了,我认为你最好的方法是训练自己的级联。