2011-10-26 73 views
1

我想使用openCV来检测人员何时抬起或放下一只手或两只手。我已经浏览了python opencv提供的教程,并且他们中的任何一个似乎都无法完成这项工作。在两个人面前放置一台摄像机,距离他们约50厘米(所以你可以从腰部看到他们)。这个人能够抬起或者放下每个手臂,或者两个手臂,并且我必须在他们这样做时检测(相机安装在过山车的杆上;这意味着背景总是在变化)使用OpenCV检测手牌

如何在尽可能最快的时间内检测到这种情况?它不一定是实时检测,但它不必超过0.5秒。整个图像是640x480。现在,由于手只能出现在图像的顶部,因此这会将搜索区域缩小一半=> 640x240。这将减少在不断变化的背景中搜索某个对象(手)的问题。

谢谢 斯特凡F.

+0

你能否阐述也许你缺少什么例如[谷歌搜索结果] (http://www.google.nl/search?q=opencv+detect+hand)? – jro

+0

你好。是。该算法与HSV颜色空间中的肤色检测一起工作,但我需要检测整个手+手臂,而不仅仅是手势。有时我可能会有一只彩色的手,有时候这个人可能戴着手套。 –

回答

1

您可以尝试非常基本的,但非常有效和快速的解决方案:对图像的上半部分 :

  1. Canny边缘检测
  2. morphologyEx具有足够的结构化元素(也可以是简单的侵蚀/扩张组合)
  3. 使用自适应阈值转换为BW
  4. 用表示预期覆盖区域的掩码对结果进行异或运算。
  5. xor在掩码的每个区域中返回的个数是您应该使用的索引。

这是非常快的,你可以在0.5秒内进行多次迭代并使用平均值。你也可以侦测脸部,并用它们来适应你的面具的位置,但这将是更加昂贵:)

希望帮助