如何使用 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 教學目錄

這個網誌中的熱門文章

2023 最新入門零基礎 Kotlin教學【從零開始學 Kotlin 程式設計】Kotlin 教學課程目錄 (Android Kotlin, IntelliJ IDEA, Android Studio, Android APP 開發教學)

nano 文字編輯器

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

2022 最新入門零基礎 Flutter教學 【Flutter 程式設計入門實戰 30 天】Flutter 教學課程目錄 (IntelliJ IDEA 開發教學)

Android Studio 歷代版本下載點