Kinnect for window SDK开发入门(一)

Stella981
• 阅读 423

Kinect for windows SDK开发入门(一):开发环境配置

前几天无意中看到微软发布了Kinect for windows sensor,进去看了一下Kinect应用的例子,发现Kinect除了作为xbox360游戏的外设外还能开发一些很酷的应用,而且微软也发布可针对Kinect开发的Kinect for windows SDK1.0正式版本,原本想买一个Kinect for windows sensor来进行开发玩一玩的,可是那个出来没多久,淘宝上只有代购的,而且比Kinect for Xbox360 sensor贵了很多,而且只能进行开发,考虑到以后开发完了,想玩Xbox的话直接就再买个主机,连上这个就可以玩体感游戏了,所以在淘宝上买了一个Kinect for Xbox360 sensor,这两个sensor的最大区别是for windows版本的有近景模式,能够进行近景识别。

首先来看一下Kinect设备:

1. Kinect设备

黑色的Kinect设备如下图:基座和感应器之间有一个电动的马达,通过程序能够调整俯仰角度,在上面的感应器中有一个红外投影仪,两个摄像头,四个麦克风和一个风扇。打开外面的盖子可以看到里面的构造:这些感应器用来捕捉RGB和深度数据,面对Kinect,从左往右看。最左边是红外光源,其次是LED指示灯,再次是彩色摄像头,用来收集RGB数据,最右边是红外摄像头用才采集景深数据。彩色摄像头最大支持1280*960分辨率成像,红外摄像头最大支持640*480成像。

Kinnect for window SDK开发入门(一) Kinnect for window SDK开发入门(一)

在感应器的下方是麦克风阵列,他包括四个不同的麦克风,一个在左边的红外发射器下面,另外3个在右边景深摄像头下面。

初步了解了Kinect构造后,接下来看看开发环境的搭建:

2. Kinect for Windows SDK软硬件环境

Kinect for Windows SDK是一些列的类库,他能够使得开发者能够将Kinect作为输入设备开发各种应用程序。就像名字所显示的那样,Kinect for Windows SDK只能运行在32位或者64位的windows7及以上版本的操作系统上。

  • 硬件配置
  1. 一台电脑,当然内存越大越好(推荐2G或者以上),处理器频率(2.66GHz及以上)越高越好。
  2. Windows 7操作系统,以及支持Microsoft DirectX9.0c兼容的显卡
  3. Kinect for Xbox360 Sensor(如果单买的话,自带有USB Power Adapter,如果是和Xbox360套装一起捆绑的话,因为Xbox主机能够直接为Kinect外设提供电源,所以没有电源,可能需要另买USB Power Adapter)

使用Visual Studio 2010 Express版本或者专业版进行开发时,需要安装最新版本的Kinect for Windows SDK,SDK中包含有对Kinect的硬件驱动。

  • 软件配置

1. Visual Studio 2010 Express或者Visual Studio 2010专业版或其他版本

2. .NET Framework 4.0

3. Kinect for Windows SDK,最新版本为1.0版本,下载地址:http://www.microsoft.com/en-us/kinectforwindows/develop/overview.aspx

3. 安装步骤

安装SDK之前,需要断开Kinect与电脑的连接,并关闭Visual Studio。安装过程很简单,等SDK安装完成之后,将Kinect电源线插上并连接到电脑上,Win7会自动寻找和安装驱动,安装完成后就可以识别Kinect,这是Kinect上面LED指示灯会变成绿色。

看驱动是否安装成功,可以到电脑的设备管理器中查看,如下图:在Microsoft Kinect节点下应该有3个项,分别是Microsoft Kinect Audio Array Control,Microsoft Kinect Camera, 和 Microsoft Kinect Security Control.

查看Kinect麦克风是否安装成功可以在设备管理器的声音视频游戏控制器节点下查看,如下图,Kinect USB Audio 应该在这个节点下面:

Kinnect for window SDK开发入门(一) Kinnect for window SDK开发入门(一)

4. 创建第一个Kinect 项目

创建一个Kincet项目通常需要:

1. 创建一个VS项目,一般为了展示通常创建一个wpf项目。

2. 添加Microsoft.Kinect.dll引用,如果是早期版本的SDK,这个名称可能不同。

3. 引入Kinect命名空间。

Kinect支持3中类型的托管应用程序,分别是:控制台应用程序,WPF以及Windows Form应用程序。首先来创建一个Windows 控制台应用程序,然后在Main函数所在的代码中引入Kinect命名控件,代码如下:

using Microsoft.Kinect;

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前面一段距离,你就会看到控制台上输出的信息,酷吧。

5.Kinect SDK示例程序

安装完Kinect for Windows SDK后,快捷菜单列表中有一个Kinect SDK Sample Browser,自带有一些示例应用程序,打开后如下图:

Kinnect for window SDK开发入门(一)

如果安装好了Kinect,就可以直接点击运行了:我试了一下,挺有趣的:

Kinect Explorer:这是一WPF程序,界面分为左右两个图像区域,左边通过彩色摄像头获取图像信息,并通过骨骼追踪将骨骼叠加在图像上,右边图像是通过景深摄像头获取的景深信息,也在图上叠加了骨骼信息,在这两幅图像下面是一些列对成像参数的设置。这个例子主要是用来展示这几个传感器的应用以及如何获取传感器的信息,还包括获取骨骼数据。

Shape Game:这个一个简单的游戏,界面上的人是通过骨骼追踪绘制出来的,在Kinect前面晃动时,界面上的人也会跟着动,当碰到图形时能够得分。

Kinect Audio Demo:这个是语音识别的例子上面展示的是声音的方向,下面是语音识别的结果,有Red,Green,Blue三个单词,当站在Kinect前面说某个单词时,如果识别正确,横线会显示相应的颜色。试了一下,还是挺灵敏的。后的的例子是针对Kinect for Windows sensor设备的例子,我的Kinect for xbox Sensor不能用。

6.结语

本文简要介绍了Kinect传感器的结构,开发所需要的软硬件环境,并通过一个小例子展示了如何从Kinect获取数据,最后简单介绍了Kinect SDK所带的例子,希望这些能帮助你属性Kinect for windows SDK。

点赞
收藏
评论区
推荐文章
技术小男生 技术小男生
4个月前
linux环境jdk环境变量配置
1:编辑系统配置文件vi/etc/profile2:按字母键i进入编辑模式,在最底部添加内容:JAVAHOME/opt/jdk1.8.0152CLASSPATH.:$JAVAHOME/lib/dt.jar:$JAVAHOME/lib/tools.jarPATH$JAVAHOME/bin:$PATH3:生效配置
Jacquelyn38 Jacquelyn38
1年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
刚刚好 刚刚好
4个月前
css问题
1、在IOS中图片不显示(给图片加了圆角或者img没有父级)<div<imgsrc""/</divdiv{width:20px;height:20px;borderradius:20px;overflow:h
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
小森森 小森森
4个月前
校园表白墙微信小程序V1.0 SayLove -基于微信云开发-一键快速搭建,开箱即用
后续会继续更新,敬请期待2.0全新版本欢迎添加左边的微信一起探讨!项目地址:(https://www.aliyun.com/activity/daily/bestoffer?userCodesskuuw5n)\2.Bug修复更新日历2.情侣脸功能大家不要使用了,现在阿里云的接口已经要收费了(土豪请随意),\\和注意
晴空闲云 晴空闲云
4个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
3个月前
快速入门|使用MemFire Cloud构建React Native应用程序
MemFireCloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
Wesley13 Wesley13
1年前
MySQL查询按照指定规则排序
1.按照指定(单个)字段排序selectfromtable_nameorderiddesc;2.按照指定(多个)字段排序selectfromtable_nameorderiddesc,statusdesc;3.按照指定字段和规则排序selec
Wesley13 Wesley13
1年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
helloworld_28799839 helloworld_28799839
4个月前
常用知识整理
Javascript判断对象是否为空jsObject.keys(myObject).length0经常使用的三元运算我们经常遇到处理表格列状态字段如status的时候可以用到vue