我正在使用网络摄像头获取视频源,然后在此视频源上执行运动跟踪。运动跟踪器(x,y)
连续返回坐标。
我想用这些(x,y)
来识别手势,例如“向左滑动”、“向右滑动”、“向上滑动”或“向下滑动”。
我如何制作和存储这些手势的模板,我如何判断/识别其中一个手势是否发生?
先感谢您 :)
PS:我使用的是 Flex 4 和 ActionScript 3.0。如果有人可以帮助我解决逻辑,我可以用 ActionScript 编写它。
我正在使用网络摄像头获取视频源,然后在此视频源上执行运动跟踪。运动跟踪器(x,y)
连续返回坐标。
我想用这些(x,y)
来识别手势,例如“向左滑动”、“向右滑动”、“向上滑动”或“向下滑动”。
我如何制作和存储这些手势的模板,我如何判断/识别其中一个手势是否发生?
先感谢您 :)
PS:我使用的是 Flex 4 和 ActionScript 3.0。如果有人可以帮助我解决逻辑,我可以用 ActionScript 编写它。
我能想到的一种工作方法是使用一系列 (X,Y) 坐标来表示手势上的点。在小范围内,如果通过屏幕的手势被绘制成这样:
|1|1|1|
|1|0|0|
|1|0|0|
并表示(从左上角表示 0,0):
(0,2)(0,1)(0,0)(0,1)(0,2)
将 x,y 坐标分解为单独的 2d 数组,其中当前坐标和第一个点之间的总距离(在此示例中的所有情况下,它将递增 1),因此您将有两个数组:
X:(0,0)(1,1)(2,2)
Y:(0,1)(1,1)(2,2)
现在对每个数组进行最小二乘拟合,以找到 x 变化和 y 变化作为二次函数的最接近表示。对每个确定的手势执行相同的操作,然后将每个确定的手势的 x、y 坐标插入到用户手势的二次函数和您设计的每个确定的手势中,看看哪个最匹配。这是你的手势。
(我从未尝试过处理手势,但我不明白为什么这不起作用)
你应该把你的任务分成更小的子任务。在计算机视觉中,没有像通用手势检测这样的东西可以在所有环境中开箱即用。
首先,您需要能够检测运动。有几种方法可以做到这一点,例如背景减法或斑点跟踪。
然后你需要从你的图像中提取某些特征,例如一只手。同样,有不止一种方法可以做到这一点。从肤色近似/评估开始,这在不同的照明条件下很容易出错,到更先进的技术,真正尝试“分析”物体的形状。这些算法随着时间的推移“学习”手应该是什么样子。
我只能建议购买一本关于计算机视觉的不错的书,并在网络上搜索文章等。还有像 OpenCV 这样的库,您可以使用它来了解更多关于实现方面的信息。应该有几个 OpenCV 到 ActionScript 3 的端口。我还可以推荐 Eugene Zatepyakin ( http://blog.inspirit.ru ) 的文章和工具。他正在使用 ActionScript 3 完成出色的 CV 工作。
长话短说,您应该研究运动跟踪和特征提取。
最好的起点是了解手语识别或触控板输入的工作原理,例如创建参考图像并将其与用户输入进行比较。Adobe 特有的FLARToolKit ,在其网站上的增强现实文章中有详细说明。
参考: