《马宁:如何开发一个有趣的Kinect应用.pdf》由会员分享,可在线阅读,更多相关《马宁:如何开发一个有趣的Kinect应用.pdf(22页珍藏版)》请在三一文库上搜索。
1、Kinect for Windows SDK 开发初体验 马宁_aawolf “下“下面面的内容非常严肃”的内容非常严肃” 八卦一下 Kirsten Price 再重申一遍:再重申一遍: “下“下面面的内容非常严肃”的内容非常严肃” Agend 什么是 Kinect? Kinect历史 Kinect for Windows SDK简介 设置Kinect开发环境 Kinect开发介绍 Kinect示例 Whats is Kinect? Kinect是XBox 360的外接体感设备 动作捕捉 语音识别 Kinect无需借助任何外设进行动作捕捉 目前只支持人类动作的捕捉 Rare负责软件开发,Ran
2、ge Camera技术 由PrimeSense提供 同类产品 任天堂 Wii Play Station Move Kinect History CodeName:Project Natal 2009年E3公布,2010年10月上市 有史以来销售最快的消费类电子产品 截止2011年3月9日,销售超过一千万部 2011年6月发布Kinect for Windows SDK 动作捕捉的机器学习技术获得2011 MacRobert Award工程创新大奖 技术指标 输出视频帧率为30Hz 8-bit VGA 分辨率(640 480 pixels) 最佳识别区域1.23.5 m,扩展区域0.76 m 可
3、视区域 : 水平57 垂直 43 最多跟踪20个人体节点 Kinect for Windows SDK 非商业授权,商业授权将在下一个版本中 提供 OS:Windows 7 Visual Studio 2010 Express以上版本 支持C+, C# 和 VB.NET 主要功能 Raw sensor streams Skeletal tracking Advanced audio capabilities Kinect Hardware Setting Up Your Development Environment 硬件 Kinect Hardware AC Adapter/ Power S
4、upply 软件 Kinect for Windows SDK http:/ us/um/redmond/projects/kinectsdk/download.aspx Coding4Fun Kinect Toolkit http:/ 添加引用 添加引用 Microsoft.Research.Kinect Coding4Fun.Kinect.Wpf.dll (可选) 命名空间 using Microsoft.Research.Kinect.Nui; using Microsoft.Research.Kinect.Audio; using Coding4Fun.Kinect.Wpf; 初始化R
5、untime Runtime 封装一个Kinect sensor的功能 RutimeOptions 指定Kinect sensore能够使用的功能 Runtime nui; nui = new Runtime(); nui.Initialize(RuntimeOptions.UseColor| RuntimeOptions.UseDepth | RuntimeOptions.UseDepthAndPlayerIndex | RuntimeOptions.UseSkeletalTracking); Camera Fundamentals VideoFrameReady事件 ImageFrameR
6、eadyEventArgs参数 ImageFrame.Image属性:PlanarImage 使用Coding4Fun Kinect Toolkit nui.VideoFrameReady += new EventHandler(nui_VideoFrameReady); void nui_VideoFrameReady(object sender, ImageFrameReadyEventArgs e) PlanarImage imageData = e.ImageFrame.Image; image1.Source = BitmapSource.Create(imageData.Width
7、, imageData.Height, 96, 96, PixelFormats.Bgr32, null, imageData.Bits, imageData.Width * imageData.BytesPerPixel); /image1.Source = e.ImageFrame.ToBitmapSource(); 获取Depth信息 nui.DepthFrameReady += new EventHandler(nui_DepthFrameReady); nui.DepthStream.Open(ImageStreamType.Depth, 2, ImageResolution.Res
8、olution320x240, ImageType.Depth); void nui_DepthFrameReady(object sender, ImageFrameReadyEventArgs e) image2.Source = e.ImageFrame.ToBitmapSource(); Camera Data Skeletal Tracking Fundamentals (1) Kinect最多可以 追踪20个骨骼 点 SkeletonFrame 骨骼帧 Skeletons 骨骼点列表 Skeleton API Skeletal Tracking Fundamentals (2) n
9、ui = new Runtime(); nui.Initialize(RuntimeOptions.UseSkeletalTracking); nui.SkeletonFrameReady += new EventHandler(nui_SkeletonFrameReady); void nui_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) SkeletonFrame allSkeletons = e.SkeletonFrame; /get the first tracked skeleton Skeleton
10、Data skeleton = (from s in allSkeletons.Skeletons where s.TrackingState = SkeletonTrackingState.Tracked select s).FirstOrDefault(); Working with Depth Data Runtime nui = new Runtime(); private void Window_Loaded(object sender, RoutedEventArgs e) /UseDepthAndPlayerIndex and UseSkeletalTracking nui.In
11、itialize(RuntimeOptions.UseDepthAndPlayerIndex | RuntimeOptions.UseSkeletalTracking); /register for event nui.DepthFrameReady += new EventHandler(nui_DepthFrameReady); /DepthAndPlayerIndex ImageType nui.DepthStream.Open(ImageStreamType.Depth, 2, ImageResolution.Resolution320x240, ImageType.DepthAndPlayerIndex); void nui_DepthFrameReady(object sender, ImageFrameReadyEventArgs e) Sample Project 光剑 虚拟试衣间 超级玛丽 总结 Kinect是一种廉价的动作捕捉设备 有可能成为鼠标之后计算机交互的新时代 在专业领域和消费者领域均有机会 专业领域发展会快于消费者领域 如何为好的技术寻找成功的应用场景?