Download - Kinect 2.0 Programming (3)
![Page 1: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/1.jpg)
Kinect 2.0 Programming (3)
Kinect03
FELab
2015/12/12
1
![Page 2: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/2.jpg)
Kinect Gesture 偵測與應用
Kinect03 目標、開發、執行
Kinect Gesture 偵測與應用系統簡介
Kinect03 畫面規劃
Kinect03 實作
2
![Page 3: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/3.jpg)
3
![Page 4: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/4.jpg)
4
![Page 5: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/5.jpg)
5
![Page 6: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/6.jpg)
6
![Page 7: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/7.jpg)
7
![Page 8: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/8.jpg)
8
![Page 9: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/9.jpg)
9
Kinect03 程式顯示 Kinect One 持續傳入的彩色影像
(1920x1080 @30fps),提供影像分色處理選項與影像
存檔功能,顯示已存檔數目,並加上 Kinect Gesture
操控功能,讓使用者除了滑鼠、觸控螢幕操控之外,
亦可以身體的動作或姿勢操控。
開發工具為Windows 10 加上 Visual Studio 2015 環境
之 C# + WPF + Kinect for Windows SDK 2.0
Kinect03 目標、開發、執行
![Page 10: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/10.jpg)
10
程式執行時需將 Kinect One 接上電腦之 USB 3.0 插
槽
建議將螢幕解析度調為 1920x1080或以上
Kinect03 專案下載 (Kinect03.zip)
https://onedrive.live.com/redir?resid=AB6DA2015C8C4A60!2310&a
uthkey=!AB3b_EjI6m_yKtA&ithint=file%2czip
![Page 11: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/11.jpg)
11
Kinect Gesture 偵測與應用系統簡介
Gesture指身體做出某種動作,例如
右手往左揮 (前一選項, Previous類別)
「COLOR」→「BLUE」→「GREEN」→「RED」
左手往右揮 (後一選項, Next類別)
「COLOR」→「RED」→「GREEN」→「BLUE」
右手肘高舉 (影像存檔, Save類別)
![Page 12: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/12.jpg)
12
右手往左揮
開始時,右手腕在右手肘右前方
揮動過程,右手腕往左移動一定的距離
整個揮動過程必須在設定的時間內完成
左手往右揮
開始時,左手腕在左手肘左前方
揮動過程,左手腕往右移動一定的距離
整個揮動過程必須在設定的時間內完成
![Page 13: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/13.jpg)
13
每種姿勢的偵測功能寫成一個類別 (class)
程式同時偵測三種動作或姿勢,若有符合任一動作
或姿勢標準,則觸發該事件。
Previous、Next、Save三個類別觸發的事件,其功
能等於 Red、Green、Blue、Color、Save五個控制項
的 Click事件。
![Page 14: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/14.jpg)
14
視窗大小為 1440x810
一個 Image控制項顯示 1280x720 @30fps 即時影像
四個 Button控制項分別做為影像分色處理的選項
(Red、Green、Blue、Color)
一個 Button控制項自動將畫面影像以 jpg 格式,存
檔於 Kinect03 專案之與 Kinect03.exe 相同檔案夾,
檔名預設為 color000001.jpg、、、color999999.jpg。
Kinect03 畫面規劃
![Page 15: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/15.jpg)
15
一個 Label控制項顯示已儲存影像檔案數目
利用WriteableBitmap類別配置記憶體區塊,將記憶
體區塊的影像即時顯示在 Image控制項
每個 Kinect One 傳入的彩色影像 (Frame),存入指定
的記憶體區塊,經影像處理後,傳至 Image 控制項
呈現出來。
一個 KinectSensor類別的物件代表一台 Kinect One
(一台電腦只能接一台設備)
![Page 16: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/16.jpg)
16
視窗大小為 1440x810 (Kinect01)
Image控制項顯示 1280x720圖像 (ColorImage)
Button控制項操控紅色影像 (Red)
Button控制項操控綠色影像 (Green)
Button控制項操控藍色影像 (Blue)
Button控制項操控回復彩色影像 (Color)
Button控制項操控影像存檔 (Save)
Label控制項顯示已存檔影像數目 (Count)
![Page 17: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/17.jpg)
17
建立 Kinect03 方案
起動 Visual Studio Professional 2015
點選「檔案(F)」→「新增(N)」→「專案(P)…」→「Visual
C#」→「WPF 應用程式」
「名稱(N)」填入 Kinect03 (原來是WpfApplication1)
「位置(L)」利用瀏覽(B)… 選定目錄
點選「確定」
Kinect03 實作
![Page 18: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/18.jpg)
18
加入Microsoft.Kinect組件使 SDK 可以被專案使用
在『參考』處按右鍵,點選『加入參考(R)』
點選「擴充功能」→挑選「Microsoft.Kinect 2.0.0.0」
→ CheckBox 處點一下使出現打勾
點選「確定」
![Page 19: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/19.jpg)
19
透過Window 的屬性視窗修改Window 的屬性值
名稱:Kinect03
將 Kinect03屬性修改為
FontSize:20
Height:810
ResizeMode:CanMinimize
Title:Kinect ColorFrame (Gesture)
Width:1440
![Page 20: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/20.jpg)
20
將 Kinect03 視窗加入一個 Image控制項
滑鼠在工具箱的 Image點一下,然後在視窗設計區點一下
名稱:ColorImage
將 ColorImage屬性修改為
Height:720
Margin:70 0 0 0
Width:1280
![Page 21: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/21.jpg)
21
將 Kinect03視窗加入四個 Button控制項
名稱:Red
將 Red屬性修改為
Background:單色筆刷 (R:255 G:0 B:0 A:100%)
Content:RED
FontSize:32
Height:45
Margin:70 725 0 0
Width:150
![Page 22: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/22.jpg)
22
名稱:Green
將 Green屬性修改為
Background:單色筆刷 (R:0 G:255 B:0 A:100%)
Content:GREEN
FontSize:32
Height:45
Margin:250 725 0 0
Width:150
![Page 23: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/23.jpg)
23
名稱:Blue
將 Blue屬性修改為
Background:單色筆刷 (R:0 G:0 B:255 A:100%)
Content:BLUE
FontSize:32
Height:45
Margin:430 725 0 0
Width:150
![Page 24: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/24.jpg)
24
名稱:Color
將 Color屬性修改為
Background:漸層筆刷 (放射漸層 R:160 G:160 B:80
A:100%)
Content:COLOR
FontSize:32
Height:45
Margin:610 725 0 0
Width:150
![Page 25: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/25.jpg)
25
將 Kinect03視窗加入一個 Button控制項
名稱:Save
將 Save屬性修改為
Background:單色筆刷 (R:180 G:100 B:220 A:100%)
Content:SAVE
FontSize:32
Height:45
Margin:860 725 0 0
Width:150
![Page 26: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/26.jpg)
26
將 Kinect03視窗加入一個 Label控制項
名稱:Count
將 Count屬性修改為
Background:單色筆刷 (R:210 G:140 B:70 A:100%)
Content:存檔影像:000000
FontSize:32
Height:45
Margin:1040 725 0 0
Width:310
![Page 27: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/27.jpg)
27
滑鼠雙擊 Kinect03事件視窗的 Loaded右邊空白欄位
滑鼠雙擊 Kinect03事件視窗的 Unloaded右邊空白欄位
滑鼠雙擊 Red事件視窗的 Click右邊空白欄位
滑鼠雙擊 Green事件視窗的 Click右邊空白欄位
滑鼠雙擊 Blue事件視窗的 Click右邊空白欄位
滑鼠雙擊 Color事件視窗的 Click右邊空白欄位
滑鼠雙擊 Save事件視窗的 Click 右邊空白欄位
加入 Kinect03 專案欲處理的事件
![Page 28: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/28.jpg)
28
現在MainWindow.xaml 檔案如下
![Page 29: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/29.jpg)
29
![Page 30: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/30.jpg)
30
![Page 31: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/31.jpg)
31
寫入程式碼至MainWindow.xaml.cs 檔案
![Page 32: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/32.jpg)
32
![Page 33: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/33.jpg)
33
+=之後接著按 Tab鍵
![Page 34: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/34.jpg)
34
輸入 colorFrameReader.FrameArrived += 接著按 Tab鍵
自動產生 ColorFrameReader_FrameArrived函式
每一個 RGB 影格 (Frame) 傳入時,會觸發一次FrameArrived事件,希望程式對一個 RGB 影格做甚麼處理,就寫在ColorFrameReader_FrameArrived 函
式裏,每秒觸發 30 次。
![Page 35: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/35.jpg)
35
![Page 36: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/36.jpg)
36
![Page 37: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/37.jpg)
37
![Page 38: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/38.jpg)
38
![Page 39: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/39.jpg)
39
![Page 40: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/40.jpg)
40
![Page 41: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/41.jpg)
41
建置 Kinect03 方案
「建置(B)」→「重建方案(R)」
執行 Kinect03 方案
「偵錯(D)」→「啟動但不偵錯(H)」
![Page 42: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/42.jpg)
42
現在專案執行畫面如下 (Kinect 圖是鏡像)
![Page 43: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/43.jpg)
43
在『C# Kinect03』處按右鍵,點選『加入(D)』→『類別
(C)…』→「名稱(N)」填入 Previous.cs →「新增(A)」
在『C# Kinect03』處按右鍵,點選『加入(D)』→『類別
(C)…』→「名稱(N)」填入 Next.cs →「新增(A)」
在『C# Kinect03』處按右鍵,點選『加入(D)』→『類別
(C)…』→「名稱(N)」填入 Save.cs →「新增(A)」
加入 Kinect03 三個動作或姿勢偵測的類別
![Page 44: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/44.jpg)
44
寫入程式碼至 Previous.cs 檔案
![Page 45: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/45.jpg)
45
![Page 46: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/46.jpg)
46
![Page 47: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/47.jpg)
47
![Page 48: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/48.jpg)
48
![Page 49: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/49.jpg)
49
寫入程式碼至 Next.cs 檔案
![Page 50: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/50.jpg)
50
![Page 51: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/51.jpg)
51
![Page 52: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/52.jpg)
52
![Page 53: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/53.jpg)
53
![Page 54: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/54.jpg)
54
寫入程式碼至 Save.cs 檔案
![Page 55: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/55.jpg)
55
![Page 56: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/56.jpg)
56
![Page 57: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/57.jpg)
57
![Page 58: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/58.jpg)
58
寫入程式碼至MainWindow.xaml.cs 檔案
![Page 59: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/59.jpg)
59
![Page 60: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/60.jpg)
60
![Page 61: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/61.jpg)
61
![Page 62: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/62.jpg)
62
![Page 63: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/63.jpg)
63
![Page 64: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/64.jpg)
64
![Page 65: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/65.jpg)
65
![Page 66: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/66.jpg)
66
![Page 67: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/67.jpg)
67
![Page 68: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/68.jpg)
68
![Page 69: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/69.jpg)
69
![Page 70: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/70.jpg)
70
![Page 71: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/71.jpg)
71
![Page 72: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/72.jpg)
72
![Page 73: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/73.jpg)
73
建置 Kinect03 方案
「建置(B)」→「重建方案(R)」
執行 Kinect03 方案
「偵錯(D)」→「啟動但不偵錯(H)」
![Page 74: Kinect 2.0 Programming (3)](https://reader034.vdocuments.pub/reader034/viewer/2022042706/588538501a28ab26518b636f/html5/thumbnails/74.jpg)
74
加上三種動作或姿勢體感操控