74
Kinect 2.0 Programming (3) Kinect03 FELab 2015/12/12 1

Kinect 2.0 Programming (3)

Embed Size (px)

Citation preview

Page 1: Kinect 2.0 Programming (3)

Kinect 2.0 Programming (3)

Kinect03

FELab

2015/12/12

1

Page 2: Kinect 2.0 Programming (3)

Kinect Gesture 偵測與應用

Kinect03 目標、開發、執行

Kinect Gesture 偵測與應用系統簡介

Kinect03 畫面規劃

Kinect03 實作

2

Page 3: Kinect 2.0 Programming (3)

3

Page 4: Kinect 2.0 Programming (3)

4

Page 5: Kinect 2.0 Programming (3)

5

Page 6: Kinect 2.0 Programming (3)

6

Page 7: Kinect 2.0 Programming (3)

7

Page 8: Kinect 2.0 Programming (3)

8

Page 9: Kinect 2.0 Programming (3)

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)

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)

11

Kinect Gesture 偵測與應用系統簡介

Gesture指身體做出某種動作,例如

右手往左揮 (前一選項, Previous類別)

「COLOR」→「BLUE」→「GREEN」→「RED」

左手往右揮 (後一選項, Next類別)

「COLOR」→「RED」→「GREEN」→「BLUE」

右手肘高舉 (影像存檔, Save類別)

Page 12: Kinect 2.0 Programming (3)

12

右手往左揮

開始時,右手腕在右手肘右前方

揮動過程,右手腕往左移動一定的距離

整個揮動過程必須在設定的時間內完成

左手往右揮

開始時,左手腕在左手肘左前方

揮動過程,左手腕往右移動一定的距離

整個揮動過程必須在設定的時間內完成

Page 13: Kinect 2.0 Programming (3)

13

每種姿勢的偵測功能寫成一個類別 (class)

程式同時偵測三種動作或姿勢,若有符合任一動作

或姿勢標準,則觸發該事件。

Previous、Next、Save三個類別觸發的事件,其功

能等於 Red、Green、Blue、Color、Save五個控制項

的 Click事件。

Page 14: Kinect 2.0 Programming (3)

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)

15

一個 Label控制項顯示已儲存影像檔案數目

利用WriteableBitmap類別配置記憶體區塊,將記憶

體區塊的影像即時顯示在 Image控制項

每個 Kinect One 傳入的彩色影像 (Frame),存入指定

的記憶體區塊,經影像處理後,傳至 Image 控制項

呈現出來。

一個 KinectSensor類別的物件代表一台 Kinect One

(一台電腦只能接一台設備)

Page 16: Kinect 2.0 Programming (3)

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)

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)

18

加入Microsoft.Kinect組件使 SDK 可以被專案使用

在『參考』處按右鍵,點選『加入參考(R)』

點選「擴充功能」→挑選「Microsoft.Kinect 2.0.0.0」

→ CheckBox 處點一下使出現打勾

點選「確定」

Page 19: Kinect 2.0 Programming (3)

19

透過Window 的屬性視窗修改Window 的屬性值

名稱:Kinect03

將 Kinect03屬性修改為

FontSize:20

Height:810

ResizeMode:CanMinimize

Title:Kinect ColorFrame (Gesture)

Width:1440

Page 20: Kinect 2.0 Programming (3)

20

將 Kinect03 視窗加入一個 Image控制項

滑鼠在工具箱的 Image點一下,然後在視窗設計區點一下

名稱:ColorImage

將 ColorImage屬性修改為

Height:720

Margin:70 0 0 0

Width:1280

Page 21: Kinect 2.0 Programming (3)

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)

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)

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)

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)

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)

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)

27

滑鼠雙擊 Kinect03事件視窗的 Loaded右邊空白欄位

滑鼠雙擊 Kinect03事件視窗的 Unloaded右邊空白欄位

滑鼠雙擊 Red事件視窗的 Click右邊空白欄位

滑鼠雙擊 Green事件視窗的 Click右邊空白欄位

滑鼠雙擊 Blue事件視窗的 Click右邊空白欄位

滑鼠雙擊 Color事件視窗的 Click右邊空白欄位

滑鼠雙擊 Save事件視窗的 Click 右邊空白欄位

加入 Kinect03 專案欲處理的事件

Page 28: Kinect 2.0 Programming (3)

28

現在MainWindow.xaml 檔案如下

Page 29: Kinect 2.0 Programming (3)

29

Page 30: Kinect 2.0 Programming (3)

30

Page 31: Kinect 2.0 Programming (3)

31

寫入程式碼至MainWindow.xaml.cs 檔案

Page 32: Kinect 2.0 Programming (3)

32

Page 33: Kinect 2.0 Programming (3)

33

+=之後接著按 Tab鍵

Page 34: Kinect 2.0 Programming (3)

34

輸入 colorFrameReader.FrameArrived += 接著按 Tab鍵

自動產生 ColorFrameReader_FrameArrived函式

每一個 RGB 影格 (Frame) 傳入時,會觸發一次FrameArrived事件,希望程式對一個 RGB 影格做甚麼處理,就寫在ColorFrameReader_FrameArrived 函

式裏,每秒觸發 30 次。

Page 35: Kinect 2.0 Programming (3)

35

Page 36: Kinect 2.0 Programming (3)

36

Page 37: Kinect 2.0 Programming (3)

37

Page 38: Kinect 2.0 Programming (3)

38

Page 39: Kinect 2.0 Programming (3)

39

Page 40: Kinect 2.0 Programming (3)

40

Page 41: Kinect 2.0 Programming (3)

41

建置 Kinect03 方案

「建置(B)」→「重建方案(R)」

執行 Kinect03 方案

「偵錯(D)」→「啟動但不偵錯(H)」

Page 42: Kinect 2.0 Programming (3)

42

現在專案執行畫面如下 (Kinect 圖是鏡像)

Page 43: Kinect 2.0 Programming (3)

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)

44

寫入程式碼至 Previous.cs 檔案

Page 45: Kinect 2.0 Programming (3)

45

Page 46: Kinect 2.0 Programming (3)

46

Page 47: Kinect 2.0 Programming (3)

47

Page 48: Kinect 2.0 Programming (3)

48

Page 49: Kinect 2.0 Programming (3)

49

寫入程式碼至 Next.cs 檔案

Page 50: Kinect 2.0 Programming (3)

50

Page 51: Kinect 2.0 Programming (3)

51

Page 52: Kinect 2.0 Programming (3)

52

Page 53: Kinect 2.0 Programming (3)

53

Page 54: Kinect 2.0 Programming (3)

54

寫入程式碼至 Save.cs 檔案

Page 55: Kinect 2.0 Programming (3)

55

Page 56: Kinect 2.0 Programming (3)

56

Page 57: Kinect 2.0 Programming (3)

57

Page 58: Kinect 2.0 Programming (3)

58

寫入程式碼至MainWindow.xaml.cs 檔案

Page 59: Kinect 2.0 Programming (3)

59

Page 60: Kinect 2.0 Programming (3)

60

Page 61: Kinect 2.0 Programming (3)

61

Page 62: Kinect 2.0 Programming (3)

62

Page 63: Kinect 2.0 Programming (3)

63

Page 64: Kinect 2.0 Programming (3)

64

Page 65: Kinect 2.0 Programming (3)

65

Page 66: Kinect 2.0 Programming (3)

66

Page 67: Kinect 2.0 Programming (3)

67

Page 68: Kinect 2.0 Programming (3)

68

Page 69: Kinect 2.0 Programming (3)

69

Page 70: Kinect 2.0 Programming (3)

70

Page 71: Kinect 2.0 Programming (3)

71

Page 72: Kinect 2.0 Programming (3)

72

Page 73: Kinect 2.0 Programming (3)

73

建置 Kinect03 方案

「建置(B)」→「重建方案(R)」

執行 Kinect03 方案

「偵錯(D)」→「啟動但不偵錯(H)」

Page 74: Kinect 2.0 Programming (3)

74

加上三種動作或姿勢體感操控