用算法方法检测下蹲手势

时间:2014-02-06 14:46:52

标签: kinect

使用kinect工具箱,使用算法检测简单的滑动手势等,例如检测向右滑动的手势

protected override void LookForGesture()
    {
        // Swipe to right
        if (ScanPositions((p1, p2) => Math.Abs(p2.Y - p1.Y) < SwipeMaximalHeight, // Height
            (p1, p2) => p2.X - p1.X > -0.01f, // Progression to right
            (p1, p2) => Math.Abs(p2.X - p1.X) > SwipeMinimalLength, // Length
            SwipeMininalDuration, SwipeMaximalDuration)) // Duration
        {
            RaiseGestureDetected("SwipeToRight");
            return;
        }

或检测到手部头部姿势:

bool CheckHandOverHead(Vector3? headPosition, Vector3? handPosition)
    {
        if (!handPosition.HasValue || !headPosition.HasValue)
            return false;

        if (handPosition.Value.Y < headPosition.Value.Y)
            return false;

        if (Math.Abs(handPosition.Value.X - headPosition.Value.X) > MaxRange)
            return false;

        if (Math.Abs(handPosition.Value.Z - headPosition.Value.Z) > MaxRange)
            return false;

        return true;
    }

如何检测'蹲坐'手势或姿势?我假设它与上面的例子类似,但你如何检测髋关节是否通过膝关节以下来检测全范围深蹲。

有关方法的任何想法,还是有可用于模拟深蹲运动的库?

1 个答案:

答案 0 :(得分:0)

我会检查关节的Y,以检测臀部是否在膝盖以下,但是很多人不会完全蹲下。

对我有用的一种比较手势是从帧中获得一组点,这些点包含你应该做的练习的一些示例点。然后将该骨架转置到用户的骨架上,并比较用户关节与存储位置关节的距离。