如何使用 Kinect 彩色影像 (For Windows SDK V1)

Photobucket


目前SDK 正式版 V1,提供了一組 Kinect工具,


工具名稱為Kinect Wpf Viewers,方便使用者操作Kinect。

而如何在工具箱裡,加入這套控制項可以參考 KT這一篇:

如何在工具箱裡,加入Kinect Wpf Viewers 7個控制項


Kinect Wpf Viewers 加入工具箱後,

這次我們需要使用其中兩個控制項 「KinectSensorChooser 」和 


KinectColorViewer」 ,來實作 Kinect 彩色影像。
Photobucket






首先,我們先開啟Visual Studio 2010 來建立一個Kinect專案,
檔案=>新增=>專案
Photobucket




選擇WPF應用程式=>設定專案名稱=>確定
Photobucket


為這個專案加入「Kinect Wpf Viewers」控制項,詳細步驟可參考,KT這一篇:


加入後,點選KinectSensorChooser 」 控制項,且拖曳至設計畫面中
Photobucket



點選KinectColorViewer」控制項,一樣拖曳至設計畫面中
Photobucket

點選設計畫面中的「KinectColorViewer」控制項,
然後到KinectColorViewer屬性面板,設定Width=320和Height=240
Photobucket




然後在KinectColorViewer屬性面板的搜尋Bar搜尋Kinect設定資料繫結
Photobucket




設定資料繫結,元素為KinectSensorChooser
Photobucket




設定資料繫結,路徑為Kinect
Photobucket


再來只要加入開啟彩色影像串流相關事件即可完成。

結果展示:


XAML 程式碼如下:

    
        
        
    



C# 程式碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

using Microsoft.Kinect;//引用 Kinect 相關API


namespace KinectColorViewer_Demo
{
    /// 
    /// MainWindow.xaml 的互動邏輯
    /// 
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {            
            kinectSensorChooser1.KinectSensorChanged += new DependencyPropertyChangedEventHandler(kinectSensorChooser1_KinectSensorChanged);
        }

        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            StopKinect(kinectSensorChooser1.Kinect);
        }

        void kinectSensorChooser1_KinectSensorChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            //關閉舊的 Kinect
            var oldSensor = (KinectSensor)e.OldValue;
            if (oldSensor != null)
            {
                StopKinect(oldSensor);
            }

            ////開啟新的 Kinect
            var newSensor = (KinectSensor)e.NewValue;
            if (newSensor == null)
            {
                return;
            }

            //開啟彩色影像的串流
            newSensor.ColorStream.Enable(ColorImageFormat.RgbResolution640x480Fps30);
            
            try
            {
                newSensor.Start();
            }
            catch (System.IO.IOException)
            {
                //this happens if another app is using the Kinect
                kinectSensorChooser1.AppConflictOccurred();
            }
        }

        private void StopKinect(KinectSensor sensor)
        {
            if (sensor != null)
            {
                if (sensor.IsRunning)
                {
                    //關閉 Kinect
                    sensor.Stop();

                    //關閉 AudioSource
                    if (sensor.AudioSource != null)
                    {
                        sensor.AudioSource.Stop();
                    }
                }
            }
        }
    }
}


範例程式下載:


更多參考資料:
1.Kinect For Windows SDK V1  程式指南手冊
2.Channel9 Kinect for Windows Quickstart Series - Camera Fundamentals


相關文章參考:
HKT線上教學教室 - Kinect 教學目錄

這個網誌中的熱門文章

16天記下7000單字

nano 文字編輯器

最新入門零基礎 Java 教學【從零開始學 Java 程式設計】Java教學課程目錄 (IntelliJ IDEA 開發教學)

2022 最新入門基礎課程 Dart教學【從零開始學 Dart 程式設計】Dart 教學課程目錄 (IntelliJ IDEA 開發教學)

Android Studio 歷代版本下載點