2014-01-21 50 views
0

我試圖使用kinect計算關節速度。我algorythm得到的座標執行一次每隔30幀,那我是怎麼做的:關節速度:Kinect不使用FPS計數時間正確

此事件運行每次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秒運行一次(aproximattely),但那不是最新發生的事情。它的速度要快得多,但它不像運行時那樣快,因爲我不使用if計數。因爲座標是以米爲單位的,所以要使用2個關節捕捉來計算速度之間的這個時間間隔,它將是(x1-x2)/ 1具有m/s速度。

我知道這將是相當不準確的,但它只是爲了測試。

我認爲kinect不是以每秒30幀的速度捕捉,它快得多嗎?

有沒有更簡單的方法來做到這一點?

Oh和使用Visual C#IM和Kinect SDK

+0

考慮直接用'System.Diagnostics.Stopwatch'或'DateTime.UtcNow'計算運行時間。 –

回答

1

超高動力學捕獲在40FPS(每秒30幀)。 理論上,速度定義爲一個循環中的運動,因此每個關節在1/30秒內都有自己的位置,因此在每30幀中您有一秒鐘的運動。 如果你想精確計算它,你必須使用一些timer來計算這個時間,而不是counter。 如果準確的數據在您的項目中不重要,您可以將關節的所有位置存儲在列表或數組中,然後根據列表中的數據開始計算: f = 0中的FYI,arr [0]具有一些值,並且在f = 30時,存儲幀號30的值。所以通過計算這兩個值之間的距離,您可以找出結果。其實我用這種方法來計算平均步行速度。