Kinect for Windows 的錄影工具:Kinect Studio


恩…Kinect for Windows SDK v2 的程式開發文章雖然已經寫了不少,但是由於最近都在做其他事,其實也停了好久沒繼續寫了…而接下來這篇,Heresy 是打算來簡單介紹一下 Kinect for Windows SDK 的資料錄製、撥放工具:Kinect Studio。

Kinect Studio 是包含在 Kinect for Windows SDK v2 裡面的一個工具程式,它可以用來預覽 Kinect 的資料,也可以把資料錄製成「eXtended Event File」(XEF)的格式,好方便以後使用。而除了工具程式外,他實際上也有提供 API,可以讓自己寫程式的時候,可以去呼叫、控制。

這部分完整的說明,可以參考 MSDN 上的《Kinect Studio》這個章節(連結)。而 Heresy 這邊,主要是簡單解釋一下,Kinect Studio 要怎麼用。

首先,Kinect Studio 的程式打開之後,應該會是像下圖這樣子。

可以看到,他的上面最左方,是「File」的檔案選單,而右側則依序有「MONITOR」(監控)、「RECORD」(錄製)、「PLAY」(播放)和「LOG」(紀錄)這四個標籤。


MONITOR(監控)

如果是想看現在 Kinect 所抓到的資料的話,基本上就是選這個標籤。

在剛開啟程式時,基本上是還沒有啟動的狀態,這時候就需要按下畫面左上角的連線鈕(左上方「Not connected」左邊、右圖紅色圈內的按鈕)、讓程式連接到 K4W 的服務、進行資料的讀取。

如果一切都正確的話,在左側下方就會出現各式的資料列表,而右側也會顯示目前 Kinect 看到的彩色畫面了~

而如果是想以 3D 的形式來看深度資料的話,則可以點選畫面上方的「Monitor 3D View」,來切到 3D 模式;這時候應該會如下圖所示:

在這個畫面中,可以透過滑鼠來改變視角、切換到自己想看的角度。

另外,如果點選畫面上方的齒輪按鈕(右圖紅色圈的部分)的話,則可以設定要顯示的內容。

這邊跳出的顯示設定視窗會因為 2D 或 3D 模式而有所不同,不過基本上都是選擇要顯示那些資料。像是上面的 3D 畫面截圖是預設的樣子、並沒有色彩,不過透過設定把「Color」勾起來,就可以看到有色彩的畫面了~而如果對「Accessories」的部分做調整,也可以設定要顯示那些輔助的物件。

此外,這邊如果有把「Body」勾起來的話,那只要場景內有被偵測到人,也會顯示出它的骨架的。

基本上,這個功能很適合用來做 Kinect for Windows 2 環境的測試。透過這個功能,可以很簡單地拿來檢視目前 Kinect 收到的資料、並確認 Kinect 有正常運作。

這部分更詳細的介紹、以及各項圖示的說明,可以參考 MSDN 的文章:


RECORD(錄製)

而如果希望把資料錄下來的話,則是要選擇「RECORD」這個分頁。

這個分頁的畫面和「MONITOR」非常的相近,基本上只是左上角、在連線狀態旁邊的難紐變成是錄製鈕(一個紅色的圓點、右圖)而已。

要開始把資料記錄下來的時候,只需要先按下連線鈕、然後再按下錄製鈕,就可以開始錄製了~下面的畫面就是正在錄製中的畫面。

他預設會把檔案儲存在「我的文件」下的「Kinect Studio\Repository」資料夾內,如果有需要修改則要另行設定。
(要修改設定的話,請點選左上方綠色的「File」鈕,然後在裡面點選「Settings」)

由於 Kinect Studio 錄製的資料似乎都是以未壓縮的形式來錄製的,所以檔案會非常地大!Heresy 自己試著錄了一段接近一分鐘的資料,結果就佔了 7GB 的硬碟空間…

而同時,為了讓錄製過程順暢,Kinect Studio 也需要大量的記憶體空間,來當作緩衝空間(Buffer)。他預設會是 1024MB,如果都用完的話,之後的錄製會變得很慢;所以如果要錄常影片的話,建議是找一台記憶體大一點的電腦,然後把緩衝區大小調大、再來錄製。

所以其實在錄製的時候,可以考慮只錄製需要的資料就好了。在視窗左邊的列表裡面,有打勾的資料代表會被錄下來的資料,如果有資料不想把它錄下來的話,也可以手動把它取消勾選,這樣就不會被錄下來了。透過控制要錄製的內容,是可以有效減少檔案大小的。


PLAY(播放)

在錄製完成後,Kinect Studio 會自動跳到「PLAY」這個分頁,並顯示這次錄影的資訊。

這個分頁的畫面比之前的複雜很多,在視窗的上半部,是左右兩個預覽畫面,其中左半邊是目前系統使用的畫面、右半邊則是檔案的畫面;下半部則是有播放的控制、以及各種有被記錄下來的資料的時間軸。其畫面如下:

在這邊,如果左邊的連接按鈕有按下的話,那上半部左邊的畫面,會先顯示目前感應器捕捉到的即時畫面;此時「Monitor」的狀態會顯示是「Live」。

但是當按下播放紐開始撥放檔案的內容的時候,除了上半部右邊的畫面會開始撥放檔案內的資料外,Kinect Service 的資料也會被檔案播放出來的內容給取代,此時「Monitor」的狀態也會由「Live」變為「File」,而此時就算切換到「MONITOR」的分頁,看到的也會是錄製下來的檔案資料、而不再是即時的畫面了~

此時如果執行其他 K4Wv2 的程式的話,這些程式透過 Kinect 的 Service 要到的資料,也會是被 Kinect Studio 介入的結果,也就是說抓到的都會是錄製好的檔案資料!因此,透過這個方法,就可以用錄製好的資料,來測試自己寫的 Kinect for Windows SDK 的程式了~

不過在撥放時可能要注意的是,在下方的資料列表裡面,完整的清單應該是會有 11 個 Stream(根據錄製時的設定,數量可能會有所不同),不過有的 Stream 預設可能不會顯示、也不會被勾選。

這時候,可能就需要先點選列表上方的眼睛按鈕(右圖紅圈),把隱藏的 Stream 顯示出來;這樣,下面的 Stream 列表就會顯示出所有可以使用的資料都顯示出來。

接下來,就是要去根據自己的需求做設定,看要顯示/隱藏哪些 Stream,同時也需要設定那些資料要拿來給 Kinect Service 用了。

而要設定那些資料要給 Kinect Service 使用,基本上就是透過每個 Stream 最前方的核選方塊來做設定;如果是打勾的,就代表會給 Kinect Service 使用、其他 K4Wv2 的程式也會拿到這個資料,而如果是紅色的禁止符號,則代表不會送出。

像是左邊的 Stream 列表裡面,基本上就是有送出深度資料、紅外線資料等,但是彩色影像和聲音都沒有送出去。

這邊也可以看的出來,雖然他總共有 11 個 Stream,但是並非所有資料都可以送出去的。像是「Nui Body Frame」和「Nui Body Index」這兩者,前方就沒辦法勾選。

這應該也代表了 Kinect For Windows SDK v2 的人體偵測是採用即時計算的形式來進行了,沒辦法事先把計算好的結果錄下來、直接重新利用。這點和 OpenNI + NiTE 的設計算是相同的。

基本的播放功能就是這樣了。不過為了使用上的便利,微軟其實在撥放這部分,也做了不少功能可以來讓整個使用更方便。例如,再撥放前可以先設定「Loop」的「Count」、來設定這個資料要重複幾次。

另外,在灰色的時間軸上,也可以設定開始點(in point)、結束點(out point)以及暫停點(pause point);透過調整這些控制點,也可以讓偵錯時更為方便。

這部分更完整的說明,就請參考 MSDN 的《Playback View》這篇文章了。


這篇就簡單地寫到這裡了。基本上,這邊只是大概介紹一下 Kinect Studio 這個現成的軟體怎麼用而已;基本上,就是希望可以透過 Kinect Studio 這個工具,可以用來輔助開發了~

不過,Heresy 印象中以前 Kinect Studio 應該是有提供 API 可以讓開發者使用的?但是稍微找了一下,卻發現現在似乎沒有這方面的資料了?不知道是不是微軟不打算開放這部份了呢?
(參考《Documentation for Microsoft.Kinect.Tools API》)

Kinect for Windows v2 C++ 程式開發

對「Kinect for Windows 的錄影工具:Kinect Studio」的想法

  1. 您好!謝謝你提供的資源教學,對我當助很大!
    以下有些問題想和您請教:
    我的裝置是第一代的kinect,請問如何在sdk v1.8版本中記錄骨架動作呢?(是可行的嗎?)
    我是在v1.8版本用範例檔案(d2d/wpf)參考您的資料紀錄,不過跟著做發現stream 只有3個(color/deep/3d),因為只開kinect studio ,kinect 會顯示無法連接(必須皆由範例檔才能開啟)想確認是不是我有認知錯誤?

    如果能幫我指點迷津,真的感激不盡!><

    • 抱歉,個人在 Kinect for Windows SDK v1 的時代主要是透過 OpenNI 來開發,所以不清楚當時 Kinect Studio 的狀況。

  2. 你好:
    不好意思
    我想請問一下為甚麼我的Kinecy Studio 2.0沒有顯示偵測到任何東西
    只顯示一片灰色
    已經確認過Kinect有正確連線
    中間燈也有亮
    也能夠執行其他範例程式
    這是程式執行畫面
    http://imgur.com/UjH7kmM

    我有試過1.8的可以跑
    但是1.8錄製出來的是xed檔
    我想要的是可以匯入VGB的xef檔
    還是說VGB也可以用xed檔嗎?
    麻煩你了~

    • 如果你的 Kinect for Windows SDK 2.0 的範例可以跑的話,那請確認你的 Kinect Studio 的顯示參數是正確的。
      在右側的「Monitor: LIVE」右側有一個齒輪的圖示,點下去可以選擇要顯示那些東西。

      另外,K4W SDK 1.x 和 2.x 的東西基本上大多不能混用。

  3. 您好:
    我是第一次使用XBOX ONE kinect,我想請問一下,在Monitor的部分,我的左側下方有出現各式的資料列表,但是右側卻沒有顯示目前 Kinect 看到的彩色畫面,是我還有哪個部分沒有設定嗎?謝謝您!

    • 有看到深度影像嗎?
      如果有的話,請參考本文中「MONITOR(監控)」的部分,裡面有提到怎麼修改顯示的設定。

        • 請確認:
          1. Kinect 的燈有亮起
          2. Kinect Studio 上是否有顯示已連線(Connected)
          3. 顯示設定內有開啟對應的項目
          4. 執行其他範例試試看

          • 您好:
            1.Kinect的燈有亮起,裝置管理員也有抓到裝置。
            2.Kinect Studio 上有顯示已連線(Connected)
            3.顯示設定內有開啟對應的項目
            4.我想請問一下哪邊有相關的範例可以使用,因為我在網路上沒有找到範例,我是直接參考您的文章開始摸索。
            謝謝您!

          • 您好:
            我剛剛發現,雖然我的Kinect的燈有亮起(連接已激活),但是我的Kinect本身的風扇並沒有在運轉,本身也沒有燈亮起,所以我想請問是否問題有可能是出在感測器本身?
            謝謝您!

        • 如果是這樣,就不太確定是什麼問題了。
          建議可以的話,看看是否可以提供幾張目前程式畫面的截圖。

          另外,安裝完 Kinect for Windows SDK 後,就已經有官方的範例了。
          建議先直接以官方的範例程式來做測試。

發表留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料