Menu

Monday, September 30, 2013

[Kinect] การตั้งค่า Microsoft Kinect SDK สำหรับ Visual C#
[Kinect] Microsoft Kinect SDK Setting for Visual C#

เริ่มต้นด้วยการดาวน์โหลด Kinect for Windows SDK และ Kinect for Windows Developer Toolkit จาก http://www.microsoft.com/en-us/kinectforwindowsdev/Start.aspx แล้วทำการติดตั้ง
First, download Kinect for Windows SDK and Kinect for Windows Developer Toolkit from http://www.microsoft.com/en-us/kinectforwindowsdev/Start.aspx then install them

ขั้นต่อไป สร้าง Windows Forms Application ใน Visual C#
Second, create Windows Forms Application on Visual C#

ไปที่ Solution Explorer คลิ๊กขวาที่ References แล้วเลือก Add Reference...
Go to Solution Explorer then right click at References and select Add Reference...


ไปที่แท็บ Browse แล้วไปที่ C:\Program Files\Microsoft SDKs\Kinect
Go to Browse tab then go to C:\Program Files\Microsoft SDKs\Kinect


เลือก Microsoft.Kinect.dll จาก v1.8\Assemblies\Microsoft.Kinect.dll
Select Microsoft.Kinect.dll from v1.8\Assemblies\Microsoft.Kinect.dll

ทำซ้ำสามข้อก่อนหน้านี้ แต่เลือก Microsoft.Kinect.Toolkit.dll จาก Developer Toolkit v1.8.0\Assemblies\Microsoft.Kinect.Toolkit.dll แทน Microsoft.Kinect.dll
Repeat last three steps but select Microsoft.Kinect.Toolkit.dll from Developer Toolkit v1.8.0\Assemblies\Microsoft.Kinect.Toolkit.dll instead of Microsoft.Kinect.dll


ในหน้าออกแบบของฟอร์ม เพิ่มคอมโพเนนต์ RichTextBox ชื่อ rtbMessages
In design of form, add RichTextBox component with named rtbMessages

ในโค้ดของฟอร์ม เพิ่มสองประโยคข้างล่าง
In code of form, add two statement below
  1. using Microsoft.Kinect;
  2. using Microsoft.Kinect.Toolkit;

ประกาศตัวแปรโกลบอลตามข้างล่าง
Define new global variable as follow
  1. KinectSensorChooser _chooser;

ใส่โค้ดด้านล่างนี้ในเมธอดคอนสตรัคเตอร์ของฟอร์ม
Insert below code into constructor method of form
  1. _chooser = new KinectSensorChooser();
  2. _chooser.KinectChanged += ChooserSensorChanged;
  3. _chooser.Start(); 

ใส่โค้ดด้านล่างนี้ในคลาสของฟอร์ม
Insert below code into class of form
  1. void ChooserSensorChanged(object sender, KinectChangedEventArgs e)
  2. {
  3.      var old = e.OldSensor;
  4.      StopKinect(old);

  5.      var newsensor = e.NewSensor;
  6.      if (newsensor == null)
  7.     {
  8.          return;
  9.      }

  10.      newsensor.SkeletonStream.Enable();
  11.      newsensor.ColorStream.Enable(ColorImageFormat.RgbResolution640x480Fps30);
  12.      newsensor.DepthStream.Enable(DepthImageFormat.Resolution640x480Fps30);
  13.      newsensor.AllFramesReady += SensorAllFramesReady;

  14.      try
  15.      {
  16.           newsensor.Start();
  17.           rtbMessages.Text = "Kinect Started" + "\r";
  18.       }
  19.       catch (System.IO.IOException)
  20.       {
  21.            rtbMessages.Text = "Kinect Not Started" + "\r";
  22.            //maybe another app is using Kinect 
  23.            _chooser.TryResolveConflict();
  24.       }
  25. }

  26. private void StopKinect(KinectSensor sensor)
  27. {
  28.      if (sensor != null)
  29.      {
  30.           if (sensor.IsRunning)
  31.           {
  32.                sensor.Stop();
  33.                sensor.AudioSource.Stop();
  34.           }
  35.      }
  36. }
  37. void SensorAllFramesReady(object sender, AllFramesReadyEventArgs e)
  38. {
  39. }

กดปุ่ม F5 บนคีย์บอร์ด เพื่อคอมไพล์และรัน
Press F5 on keyboard for compiling and running

No comments:

Post a Comment