2012-02-14 55 views
0

我們正在記錄各種身體部位的位置。我們的硬件(微軟Kinect)提供多達20個人體關節位置。它以約30 fps的速度提供數據。位置還包括該特定關節的X,Y和Z座標。一個特定的手勢是大約3-4秒,所以沒有。的幀數從80到120不等。我們的問題是存儲和檢索這些數據並對其進行處理。我們的術語如下:以下場景應該是什麼樣的設計?

框架:所有關節的考慮 樣品快照:收集所有幀的特定手勢

問題是,我們正在試驗,我們不知道有多少節數據將在項目中使用。所以它不是固定的。

現在考慮存儲數據的特定問題。 SQL查詢是使用以下方法生成的。 http://pastebin.com/ga114cQm

正如你所看到的,問題是有很多代碼重複。在另一個我們必須預處理數據的問題中,同樣的事情發生。即使只有6個關節進行了預處理,但該方法的長度過長。 看看這裏:http://pastebin.com/JVKWNDmZ

雖然它工作,我不喜歡它。另外,如果我們像使用填充對象那樣使用封裝而不是直接使用數組,那麼會有多少性能影響?因爲這是一個實時的手勢識別系統,所以我們不能承受很大的延遲。

如果問題不是很清楚,請告訴我你不明白的部分。由於我不想要一個很大的問題,我試圖總結整個問題。

+0

你應該**使用**到達的數據,不存儲它,沒有時間這樣做。如果您必須識別手勢,則放棄不屬於手勢本身的所有內容。 – vulkanino 2012-02-14 13:20:35

+0

@vulkanino是的,爲了表彰我們正在做這件事。但是我們需要將該日期存儲用於培訓目的。 – shahensha 2012-02-14 13:45:56

回答

0

如果問題只是創建SQL INSERT指令將值存儲到數據庫,那麼您的代碼是沒有意義的。

你可以創建一個數據庫中的存儲過程,在代碼中設置的參數並調用程序,如:

SqlCommand cmd = new SqlCommand("InsertKinectData", conn); 
cmd.CommandType = CommandType.StoredProcedure; 
cmd.Parameters.Add(new SqlParameter("@SkeletonX", sd.Position.X)); 
//... 
cmd.ExecuteNonQuery(); 

爲了優化速度,保持數據庫連接打開,不要上重建SqlCommand也沒有參數,只要一到達就用新值設置參數,然後立即調用SP。

相關問題