联合速度:Kinect不计算使用FPS的时间

时间:2014-01-21 18:09:56

标签: c# kinect

我正在尝试使用kinect来计算关节速度。我的algorythm让坐标每30帧执行一次,这就是我做到的:

每当kinect具有骨架框架时,此事件就会运行:

public void SensorSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
{
     //*default code to draw skeleton here*
     count++
     if (count == 30){
         //my code to acquire and display coordinates
         count = 0;
     }

 }

理论上,坐标获取的部分应该在现实生活中每1秒运行一次(aproximatly),但那不是什么事情发生的。它比它应该的速度快得多,但它不像我不使用if计数时那么快。

关键是,id喜欢使用两个关节捕获之间的时间间隔来计算速度,因为坐标以米为单位,所以(x1 - x2)/ 1将具有m / s速度。

我知道这会非常不准确,但它仅用于测试。

我认为kinect不是以每秒30帧的速度捕捉,它的速度要快得多?

有没有更简单的方法呢?

哦,即时通讯使用Visual C#和Kinect SDK

1 个答案:

答案 0 :(得分:1)

以40FPS(每秒30帧)捕获Kinect。 理论上速度定义为循环中的运动,因此每个关节在1/30秒内具有自己的位置,因此在每30帧中您可以在一秒钟内移动。 如果您想以准确的方式计算它,则必须使用一些timer来计算此时间而不是counter。 如果在项目中拥有准确的数据并不重要,您可以将关节的所有位置存储在列表或数组中,然后根据列表中的数据开始计算: F = 0中的FYI,arr [0]具有一些值,并且在f = 30中,存储帧编号30的值。因此,通过计算这两个值之间的距离,您可以找到您的结果。 实际上我用这种方法来计算平均步行速度。