i m尝试使用Kinect计算关节速度。我的算法使坐标每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秒钟(aproximatty)运行,但这不是正在发生的事情。它比应该更快,但是当我不使用if计数时它不如它运行。
重点是,ID喜欢使用捕获2个接头之间的此时间间隔来计算速度,因为坐标为米。
是(x1- x2)/1的速度。我知道这是不准确的,但它只是用于测试。
我认为Kinect不会以每秒30帧的速度捕获,它的速度更快?
有什么更简单的方法可以做到这一点?
哦,我使用Visual C#和Kinect SDK
kinect捕获40fps(每秒30帧)。从理论上讲,速度在周期内定义为运动,因此每个关节在1/30秒内都有其自己的位置,因此在每30帧中,您都会在一秒钟内具有运动。如果要以准确的方式计算它,则必须使用一些timer
来为您计算此计时而不是counter
。如果拥有准确的数据在您的项目中不重要,则可以将关节的所有位置存储在列表或数组中,然后根据列表中的数据开始计算:FYI在f = 0中,ARR [0]具有一定的值,而f = 30中,存储的帧号30的值。因此,通过计算这两个值之间的距离,您可能会发现结果。实际上,我使用这种方法来计算平均步行速度。