【Kinect】4th-深度数据的处理

Kinect深度数据的处理

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        //首先使用LINQ语句筛选连接到电脑的Kinect设备,并赋值给kinectSensor。
        kinectSensor = (from sensor in KinectSensor.KinectSensors where sensor.Status == KinectStatus.Connected select sensor).FirstOrDefault();
        //然后调用DepthStream的Enable()函数启用深度图像数据,其参数为Resolution320x240Fps30,含义是设置深度图像的分辨率为320X240,帧率为30f/s。
        kinectSensor.DepthStream.Enable(DepthImageFormat.Resolution320x240Fps30);
        //调用start()函数启动Kinect数据流。
        kinectSensor.Start();
        //每当下一帧的深度图像数据准备好时,DepthFrameReady事件会通知应用程序添加一个kinectSensor_DepthFrameReady事件处理函数,以获取该事件返回的通知,参数类型为DepthImageFrameReadyEventArgs。
        kinectSensor.DepthFrameReady += new EventHandler<DepthImageFrameReadyEventArgs>(kinectSensor_DepthFrameReady);
    }

    private void kinectSensor_DepthFrameReady(object sender, DepthImageFrameReadyEventArgs e)
    {
        using (DepthImageFrame depthImageFrame = e.OpenDepthImageFrame())//调用OpenDepthImageFrame()函数获取深度图像数据,数据类型定义为DepthImageFrame。
        {
            if (depthImageFrame != null)//depthImageFrame不为空代表获取到了深度图像数据
            {
                //调用DepthImageFrame的CopyPixelDataTo()方法,将从Kinect设备获取到的深度图像数据复制到short数组
                pixelData = new short[depthImageFrame.PixelDataLength];//给pixelData分配相应的空间,大小由depthImageFrame的PixelDataLength属性决定
                depthImageFrame.CopyPixelDataTo(pixelData);

                /*利用获取到的数据创建一个BitmapSource,并将其赋值发给最初添加的Image控件ColorImage的Source属性。
                 * 这样就可以不断的将获取到的下一帧的深度图像数据刷新显示到界面上
                 */
                this.DepthImage.Source = BitmapSource.Create(depthImageFrame.Width,
                    //像素格式PixelFormats的值为Gray16,原始的深度图像数据是16位灰度图像
                    depthImageFrame.Height, 96, 96, PixelFormats.Gray16, null, pixelData,
                    depthImageFrame.Width * depthImageFrame.BytesPerPixel);
            }

        }
    }

    private void Window_Closed(object sender, EventArgs e)
    {
        kinectSensor.Stop();
    }

}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值