1.3 创建第一个Kinect 项目
原文地址: http://www.cnblogs.com/yangecnu/archive/2012/03/30/KinectSDK_Geting_Started.html。
创建一个Kincet项目通常需要:
1.创建一个VS项目,一般为了展示通常创建一个wpf项目。
2.添加Microsoft.Kinect.dll引用。
3.引入Kinect命名空间。
Kinect编程最需要注意的一点就是:Windows窗体并不像典型程序那样用于处理用户输入,它只用来显示来自于Kinect传感器的输入数据。另一个要注意的是:来自于Kinect的输入是持续不断变化的,一个Kinect程序不会等待诸如点击按钮之类的离散事件,而是持续地处理来自于RGB、深度和骨骼流的信息。
Kinect支持三种类型的托管应用程序:控制台应用程序,WPF以及Windows Form应用程序。
首先来创建一个Windows控制台应用程序,然后添加对Kinect库的引用,如图1-7所示。在Main函数所在的代码中添加Microsoft.Kinect命名空间:
代码如下:
using System; using Microsoft.Kinect; namespace KinectConsole { class Program { static void Main(string[] args) { //初始化sensor实例 KinectSensor sensor = KinectSensor.KinectSensors[0]; //初始化照相机 sensor.DepthStream.Enable(); sensor.DepthFrameReady += new EventHandler<DepthImageFrameReadyEventArgs>(sensor_DepthFrameReady); // 将字符变成绿色,使之看起来像黑客帝国 Console.ForegroundColor = ConsoleColor.Green; //打开数据流 sensor.Start(); // 按空格键可退出程序 while (Console.ReadKey().Key != ConsoleKey.Spacebar) { } } static void sensor_DepthFrameReady(object sender, DepthImageFrameReadyEventArgs e) { using (var depthFrame = e.OpenDepthImageFrame()) { if (depthFrame == null) return; short[] bits = new short[depthFrame.PixelDataLength]; depthFrame.CopyPixelDataTo(bits); foreach (var bit in bits) Console.Write(bit); } } } }
在上面的代码中,为了从摄像头中获取数据流,需要初始化KinectSensor
对象,然后启动他。为了获取景深数据,我们给sensor的DepthFrameReady
注册了事件。上面的代码中数据通过DepthFrameReady事件触发。在Kinect应用中,这些获取数据的事件有DepthFrameReady
,ColorFrameReady
以及SkeletonFrameReady
。可以通过这些事件获取丰富的数据来完成各种有趣的应用。
在上面的代码中,我们简单的将景深摄像头获取的数据输出打印到控制台上。运行程序,然后站在Kinect前面一段距离,你就会看到控制台上输出的信息,如下图所示。按空格键可以退出这个程序。
文件下载(已下载 1929 次)发布时间:2013/2/11 下午10:31:01 阅读次数:8283