使用OpenCV检测手部
我想用openCV来检测一个人什么时候抬起或放下手,或者同时抬起两只手。我看过python opencv提供的教程,但没有一个能解决我的问题。相机放在两个人面前,大约离他们50厘米(所以能看到他们的腰部以上)。这个人可以抬起或放下每只手,或者同时抬起两只手,我需要检测他们的动作。(相机安装在过山车的杆子上,这意味着背景总是在变化)
我该怎么做才能尽快检测到这些动作?不一定要实时检测,但也不能超过0.5秒。整个画面的大小是640x480。现在,因为手只会出现在画面的上半部分,这样可以把搜索区域缩小一半,变成640x240。这就变成了在不断变化的背景中寻找特定物体(手)的问题。
谢谢,
Stefan F.
1 个回答
1
你可以试试一个非常基础但又有效且快速的解决方案,步骤如下:
- 使用Canny边缘检测,这是一种找出图像边缘的方法。
- 用形态学操作(morphologyEx),选择合适的结构元素。其实简单的腐蚀和膨胀组合也可能足够。
- 通过自适应阈值把图像转换成黑白图像。
- 用一个代表预期覆盖区域的遮罩对结果进行异或运算。
- 在遮罩的每个区域中,异或运算返回的1的数量就是你应该使用的索引。
这个方法非常快,你可以在0.5秒内进行多次迭代并取平均值。此外,你还可以检测人脸,并用它们来调整你的遮罩位置,不过这样会更复杂一些 :)
希望这对你有帮助!