注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

W_中原的博客笔记

通知:新博客日志将更新到个人站点:http://www.zhgyuan.cn/

 
 
 

日志

 
 

Kinect学习之获取Camera图像  

2013-08-14 18:58:56|  分类: 学习笔记 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
刚接触Kinect,学着建立了第一个工程,启动了camera获取彩色和红外图像。记录下步骤,给大家参考,有错误或不妥欢迎指出。
我用的Kinect for Windows版本为1.6,Microsoft Visual Studio 2010学习版。

1、打开Visual Studio 2010,创建WPF工程
Kinect学习之获取Camera图像 - W_中原 - 汪中原的博客

2、添加SDK程序引用Microsoft.Kinect(网上有些是添加Microsoft.Research.Kinect,可能是版本不同

Kinect学习之获取Camera图像 - W_中原 - 汪中原的博客
 
Kinect学习之获取Camera图像 - W_中原 - 汪中原的博客

3、添加Image控件,双击打开Main Window.xaml文件,Image控件命名为ColorImage
Kinect学习之获取Camera图像 - W_中原 - 汪中原的博客
代码为:
<Window x:Class="KinectColorViewer.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded" Closed="Window_Closed"> <Grid> <Image Height="311" HorizontalAlignment="Left" Name="ColorImage" Stretch="Fill" VerticalAlignment="Top" Width="503" /> </Grid> </Window> 

4、在Main Window.xaml.cs中添加KINECT对象的引用
Kinect学习之获取Camera图像 - W_中原 - 汪中原的博客

5、在Main Window.xaml.cs中的MainWindow类中声明KinectSensor kinectSensor、 private byte[] pixeData 两个变量,定义KinectSensor对象。
Kinect学习之获取Camera图像 - W_中原 - 汪中原的博客

6、在Main Window.xaml右下角的“事件”中找到Loaded 和Closed两个事件,分别双击打开
(1)Loaded KinectSensor初始化代码
private void Window_Loaded(object sender, RoutedEventArgs e) 
 { 
 kinectSensor = (from sensor in KinectSensor.KinectSensors 
 where sensor.Status == KinectStatus.Connected 
 select sensor).FirstOrDefault(); 
 kinectSensor.ColorStream.Enable(ColorImageFormat.RgbResolution640x480Fps30);//彩色 //kinectSensor.ColorStream.Enable(ColorImageFormat.InfraredResolution640x480Fps30);//红外 
 kinectSensor.Start();
kinectSensor.ColorFrameReady+=kinectSensor_ColorFrameReady; 
 }
(2)Closed事件添加关闭Kinect代码
private void Window_Closed(object sender, EventArgs e) 
 { 
 kinectSensor.Stop(); 
 }


7、 在Main Window.xaml.cs中添加接收视频数据
Kinect学习之获取Camera图像 - W_中原 - 汪中原的博客

代码:(其中pixeData有的书上是pixelData,但pixelData是编译不通过的,至少在我的电脑上,原因还没找到
private void kinectSensor_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e) 
 { 
  using (ColorImageFrame imageFrame = e.OpenColorImageFrame()) 
 { 
  if (imageFrame != null) 
 
  this.pixeData = new byte[imageFrame.PixelDataLength]; 
  imageFrame.CopyPixelDataTo(this.pixeData); 
 this.ColorImage.Source = BitmapSource.Create(imageFrame.Width, imageFrame.Height, 96, 96, 
  PixelFormats.Bgr32, null, pixeData, //彩色图像 
  //PixelFormats.Gray16, null, pixeData, //红外图像 
 imageFrame.Width * imageFrame.BytesPerPixel); 
  }
 }
 }

8、到此工程都建好了,运行程序(Ctrl + F5快捷键)
效果预览:
Kinect学习之获取Camera图像 - W_中原 - 汪中原的博客

说明:把文中代码注释掉的红外行与彩色行互换,即把彩色行注释掉即可获取红外图像。

我的微博地址:
http://weibo.com/523408270
 即可关注博客更新
2013.08.14
  评论这张
 
阅读(559)| 评论(3)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017