อันดับแรก เปิด Visual Studio ก่อน เปิดกล้องและเสียบเชื่อมต่อกับพอร์ต USB ให้เรียบร้อย
สร้างโปรเจคใหม่ของ C# สมมติว่าใช้ชื่อว่า KinectCam
ที่ Solution explorer ดับเบิลคลิกที่ MainWindow.xaml.cs เพื่อจะเขียนโค้ด
ที่ Solution explorer ดับเบิลคลิกที่ MainWindow.xaml เพื่อจะแก้ไข หน้านี้จะเป็น Interface หลักของโปรแกรม
ให้เพิ่มแท็กชื่อ Image เพื่อจะแสดงวิดีโอจาก Kinect ลงบนหน้าต่างดังนี้
"< Image Name="kinectVideo" Width="640" Height="480" />"
ต่อไป ให้ทำการคลิกบริเวณโค้ดที่เขียนว่า "< Window x:Class=... "
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; 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; namespace KinectCam { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { KinectSensor myKinect; private void Window_Loaded(object sender, RoutedEventArgs e) { //Get the first Kinect connected to this computer myKinect = KinectSensor.KinectSensors[0]; //Enable the color video stream myKinect.ColorStream.Enable(); //Video event handler myKinect.ColorFrameReady += new EventHandler<ColorImageFrameReadyEventArgs>(myKinect_ColorFrameReady); //Start the sensor myKinect.Start(); } void myKinect_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e) { using (ColorImageFrame colorFrame = e.OpenColorImageFrame()) { //if get new video frame if (colorFrame == null) return; //create an array of pixel data byte[] colorData = new byte[colorFrame.PixelDataLength]; //extract pixel data from the frame to the array colorFrame.CopyPixelDataTo(colorData); //create a bitmap from the video array and set it to Image UI kinectVideo.Source = BitmapSource.Create( colorFrame.Width, colorFrame.Height, //image dimension 96, 96, //resolution 96 dpi for video frames PixelFormats.Bgr32, //image format null, //palette - none colorData, //video data colorFrame.Width * colorFrame.BytesPerPixel //stride ); } } } }
อยากเรียนถามอาจารย์ว่า
ReplyDeleteการเขียนโปรแกรมกับกล้อง Kinect มันจะแตกต่างอย่างกับการเรียนโปรแกรมกับกล้องอื่นๆเช่น Webcam ครับ และโปแกรมที่เขียนกับ Kinect มันจะมีความพิเศษกว่าที่เขียนกับ Web cam อย่างไรบ้างครับ
ขอบคุณครับ