码迷,mamicode.com
首页 > 其他好文 > 详细

kinect学习笔记(四)——各种数据流

时间:2014-11-04 01:32:30      阅读:482      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   io   color   ar   使用   for   

一、kinect开发的一个流程图

bubuko.com,布布扣

1、我们可以知道一个简单的框架就是几部分

(1)选择使用的kinect传感器

KinectSensor.KinectSensors[0]

(2)打开需要的数据流

_kinect.DepthStream.Enable();
_kinect.ColorStream.Enable();
_kinect.SkeletonStream.Enable();

(3)注册事件

其实就是主要的算法在这里体现。

有个小窍门:VS的CodeSnippet快速生成事件代码,如在代码“_kinect.DepthFrameReady+=”后面连续按两次“Tab”键,就会生成相应的时间并处理相应的代码。

二、初始化、启用kinect设备

代码如下,记得要声明一个私有成员变量_kinect,并在MainWindow()里面调用。

KinectSensor _kinect;

        private void startKinect()
        {
            if(KinectSensor.KinectSensors.Count>0)
            {
                //选择第一个kinect设备
                _kinect = KinectSensor.KinectSensors[0];
                MessageBox.Show("Kinect目前状态为:" + _kinect.Status);

                //初始化设定,启用彩色图像,深度图像和骨骼追踪
                _kinect.ColorStream.Enable(ColorImageFormat.RgbResolution640x480Fps30);
                _kinect.DepthStream.Enable(DepthImageFormat.Resolution640x480Fps30);
                _kinect.SkeletonStream.Enable();

                //注册时间,该方法将保证彩色图像,深度图像和骨骼图像的同步
                _kinect.AllFramesReady += _kinect_AllFramesReady;

                //启动kinect
                _kinect.Start();
            }
            else
            {
                MessageBox.Show("没有发现任何kinect设备");
            }
        }

void _kinect_AllFramesReady(object sender, AllFramesReadyEventArgs e)
{
            
}


三、彩色图像流数据处理

1、在MainWindows窗体上新增一个Image控件,命名为imageCamera

2、在_kinect_AllFramesReady事件处理中增加如下代码、

//显示彩色摄像头
           using(ColorImageFrame colorFrame = e.OpenColorImageFrame())
           {
               if(colorFrame == null)
               {
                   return;
               }

               byte[] pixels = new byte[colorFrame.PixelDataLength];
               colorFrame.CopyPixelDataTo(pixels);

               //BGR32格式图片一个像素为4个字节
               int stride = colorFrame.Width * 4;
               ImageCamera.Source = BitmapSource.Create(colorFrame.Width, colorFrame.Height, 96, 96, PixelFormats.Bgr32, null, pixels, stride);

              
           }

      BGR32图像的1像素对应4字节(32位),分别是B,G,R,阿尔法通道(透明度)。

      BitmapSource.Create是一个从数组到二维矩阵的过程。

      Stride为图片步长,代表图片一行像素所占的字节数,为摄像头传输图片的宽度乘以4,

      DPI,越高越清晰,普通的显示器就是96差不多。

3、效果图

bubuko.com,布布扣

kinect学习笔记(四)——各种数据流

标签:des   style   blog   http   io   color   ar   使用   for   

原文地址:http://www.cnblogs.com/BlueMountain-HaggenDazs/p/4072605.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!