Kinect开发学习笔记之(一)Kinect介绍和应用_kinect\-程序员宅基地

技术标签: kinect开发  

Kinect开发学习笔记之(一)Kinect介绍和应用

[email protected]

http://blog.csdn.net/zouxy09

 

一、Kinect简介

      Kinectfor Xbox 360,简称 Kinect,是由微软开发,应用于Xbox 360 主机的周边设备。它让玩家不需要手持或踩踏控制器,而是使用语音指令或手势来操作 Xbox360 的系统界面。它也能捕捉玩家全身上下的动作,用身体来进行游戏,带给玩家“免控制器的游戏与娱乐体验”。其在2010年11月4日于美国上市,建议售价149美金。Kinect在销售前60天内,卖出八百万部,目前已经申请金氏世界记录,成为全世界销售最快的消费性电子产品。

       2012年2月1日,微软正式发布面向Windows系统的Kinect版本“Kinect for Windows”,建议售价249美金。而在2012年晚些时候,微软还将发布面向“教育用户”的特别版Kinect。(以上来自wiki百科)

1.1、硬件

       Kinect有三个镜头,中间的镜头是 RGB 彩色摄影机,用来采集彩色图像。左右两边镜头则分别为红外线发射器和红外线CMOS 摄影机所构成的3D结构光深度感应器,用来采集深度数据(场景中物体到摄像头的距离)。彩色摄像头最大支持1280*960分辨率成像,红外摄像头最大支持640*480成像。Kinect还搭配了追焦技术,底座马达会随着对焦物体移动跟着转动。Kinect也内建阵列式麦克风,由四个麦克风同时收音,比对后消除杂音,并通过其采集声音进行语音识别和声源定位。


1.2、软件开发环境

1.2.1、非官方组合

      一开始微软对Xbox 360推出Kinect的时候,并没有在windows的开发包。而由于Kinect强大的功能和相对低廉的价格,geeks们纷纷表示希望能在电脑上用它。于是就有多位大牛开发了驱动,目前我了解到的有三个:

1)CL NUI Platform

      由NUI的大牛AlexP开发(他开发的其他著名产品包括PS3的windows驱动),可以这里载,目标平台是windows7,能够获取彩色摄像头,深度传感器以及加速度传感器数据,使用简单方便。

2)OpenKinect/libfreenect

       由号称第一个破解Kinect的Hector Martin发起,可以到这里下载,目标平台是Linux and Mac,据说有人成功移植到了windows上。因为很多geek都是Mac的拥趸,所以开发参与者众多,不仅仅是个可以获得数据的driver,geek们还写了其他高级的东西,比如我前面提到的骨骼化,将彩色摄像头作为纹理贴在深度数据上等等,很吸引人啊。

3)OpenNI

       OpenNI(opennatural interface开放自然交互)是一个多语言,跨平台的框架,它定义了编写应用程序,并利用其自然交互的API。可以到这里下载。从名字判断其终极目标大约是实现少数派报告的效果,从目前放出来的一些demo,恐怕已经超越了这个终极目标。它不是专为Kinect开发,但有Kinect的生产商PrimeSense的支持。这个感觉也是目前相对来说用的比较多的非官方组合:SensorKinect + NITE + OpenNI;其中SensorKinect是Kinect的驱动。NITE是PrimeSense提供的中间件,可以分析Kinect读取的资料,输出人体动作等等。

1.2.2、微软官方SDK

       Kinect体感游戏在Xbox 360 上获得很好的评价,但是对于 Windows 平台上的开发却一直只能使用非官方的解决方案(上面所说),例如NKinect 配合CL NUI SDK;但是微软终于在2011 年 6 月推出了 Kinect forWindows SDK Beta,特别是可以使用 C# 与.NETFramework 4.0 来进行开发。Kinect for Windows SDK主要是针对Windows7设计,内含驱动程序、丰富的原始感测数据流程式开发接口、自然用户接口、安装文件以及参考例程。Kinect for Windows SDK可让使用C++、C#或VisualBasic语言搭配MicrosoftVisualStudio2010工具的程序设计师轻易开发使用。目前最新是V1.6 。

      Kinectfor Windows SDK的下载地址:

http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/download.aspx

       Kinect SDK目前只支持Windows 7,分为x86和x64两个版本。开发工具方面还需要.NET Framework 4.0和Visual Studio 2010 (最低Express版本)的支持。这个在后面的开发环境的配置中再做介绍。

1.2.3、非官方和官方开发包的优缺点

1)官方SDK:

优点:

       提供了音频支持、调整倾角的转动电机、在全身跟踪骨骼跟踪方面:非标准姿势检测(相对于OpenNi的投降姿势…),头部、手、脚、锁骨检测以及关节遮挡等细节上的处理更为细致(但精度是否更高还不能确定)。此外,支持多传感器(多台Kinect);

缺点:

       微软对非商业使用的限制。此外,未提供手势识别和跟踪功能,未实现RGB图像/深度图像的互对齐,只是提供了对个体坐标系的对齐。在全身骨骼跟踪中,SDK只计算了关节的位置,并未得出其旋转角度。从可移植的角度来看,SDK beta只能用于Kinect/Win7平台,而OpenNi还至少支持华硕的WAVI Xtion体感设备,今后支持的硬件平台还可能更多。相比较而言SDK beta不支持Unity3D游戏引擎、不支持记录/回放数据写入磁盘、不支持原始红外视频数据流、也不支持像OpenNi一样的角色入场和出场的事件响应机制。

2)非官方OpenNI/NITE:

优点:

       可用于商业开发、包含手势识别和跟踪功能、可自动对齐深度图像和RGB图像,全身跟踪、关节旋转角度计算、看起来性能较好、已有众多游戏产品应用、支持记录/回放数据写入磁盘、支持原始红外视频数据流、支持角色入场和出场的事件响应机制。支持Primesense和华硕的WAVI Xtion硬件平台和windows、Linux和Mac等软件平台。自带的代码全面支持Unity3D游戏引擎。

缺点:

       未提供音频功能、不支持调整倾角的转动电机、在全身跟踪骨骼跟踪方面:无法跟踪头部、手、脚和锁骨的旋转动作,需要标准姿势检测(即著名的投降姿势…),关节遮挡等细节上的处理似乎存在算法bug。不能自动安装并识别Kinect多机环境。安装过程较为繁琐,特别是NITE还要申请开发证书编码。OpenNi也没有提供可用视频和深度图输入的事件触发机制(但OpenNI提供了类似功能的函数可使用,虽然不是回调函数,但是也很好用)。

总结:

       OpenNI最大的优势就是允许跨平台多设备,以及商业应用。但从原始数据的采集和预处理技术上看,微软的SDK似乎更稳定一些,况且还提供了不错的骨骼和语音支持。对于部分身体部位识别方面的功能,SDKbeta没有提供局部识别和跟踪,这需要自己的后续开发(至少在相当一段时期内微软可能都不会提供此类功能)。OpenNi/NITE虽然提供了手势识别和跟踪,然而在全身骨骼姿势识别和跟踪上还要更多借鉴微软的产品。

因此,按照目前在社区中的表现,SDK beta和OpenNi/NITE孰优孰劣还真无法一下子确定。而且随着越来越多的开发者加入微软这一方,SDK beta的普及可能会更快,但在更高层次的应用上,对二者的选用往往是需要一定智慧的。

(这部分参考:http://www.hanyi.name/blog/?p=330

 

二、Kinect应用开发汇总

      本文(百度文库上面的内容,来源未知)汇总了当前使用Kinect SDK for Windows 开发出的各种各样的应用,点击相应的链接可以看到对应Kinect应用的Demo视频。

 

虚拟应用

Kinect试衣镜,这款基于kinect体感技术的神奇的试衣镜,让客户可以快速的试穿衣服,提高销售效率和企业形象。

http://v.youku.com/v_show/id_XMjU4MjExNjgw.html

Kinect自制应用3D试衣间

http://v.youku.com/v_show/id_XMjg0MDA3MDYw.html

 

3D建模

3D摄像机, 用两个KINECT实现3D摄像机的基本效果。

http://v.youku.com/v_show/id_XMjI3MDQ2MjEy.html

雕塑工具,立等可取Kinect成街头快速人像雕塑工具,利用Kinect对人体进行3D建模,然后根据人体的3D信息,连接相应的塑模设备,塑造出人体塑像。

http://v.youku.com/v_show/id_XMjU2Njg2MzE2.html

 

机械控制

用Kinect 操控遥控直升机 

 http://v.youku.com/v_show/id_XMjgzOTYxODk2.html

Kinect Robo,使用Kinect作为机器人的头,通过kinect检测周围环境,并进行3D建模,来指导机器人的行动。

http://v.youku.com/v_show/id_XMjIzNDMyMjg0.html

Kinect控制高达机械人

http://v.youku.com/v_show/id_XMjM3NDUxMjg4.html

 

虚拟乐器

空气吉他,通过Kinect手势操作虚拟吉他弹奏音乐。

http://v.youku.com/v_show/id_XMjI5NjM3NzMy.html

Kinect弹奏中国古代乐器,通过手势的改变可以演奏出不同中国古代乐器的声音。

http://v.youku.com/v_show/id_XMjI1MDA4MTM2.html

 

虚拟娱乐

Kinect破解“初音”,将体感控制应用到漫画人物——初音上。

http://v.youku.com/v_show/id_XMjMxNjQ5MzAw.html

变身奥特曼,捕捉玩家骨架数据,虚拟为奥特曼的形态与之随动,并且附加一些特技效果。

http://v.youku.com/v_show/id_XMjM1MTY1NDY4.html

Kinect破解玩光剑,Kinect检测玩家的动作,虚拟出光剑的影像,与之随动。

http://v.youku.com/v_show/id_XMjI0NTIzOTIw.html

 

计算机相关应用

Kinect手势操作浏览器,通过Kinect手势对浏览器进行翻页,下拉,放缩等操作。

http://v.youku.com/v_show/id_XMjI1MjczMzg4.html

Air Presenter,让你的演讲从此与众不同,用kinect进行演讲的软件。

http://v.youku.com/v_show/id_XMjU1MTMyNzky.html

Kinect多点触摸,使用kinect实现隔空多点触摸,浏览图片、地图等。

http://v.youku.com/v_show/id_XMjM1MzE2MTY0.html

Kinect体感控制看片,第四军医大学西京医院骨科的医生们将破解的kinect应用在手术室,在术中,手术者可通过体感控制查看患者的影像资料。大大方便了医生手术,减少了手术室的人员流动。

http://v.youku.com/v_show/id_XMjM2Nzg2NDky.html

 

虚拟实验

Kinect蜡笔物理,使用Kinect手势绘图,通过体感控制所绘图形,并使之具有物理特性,比如重力,吸引力等。

http://v.youku.com/v_show/id_XMjI4MDMwMzM2.html

用Kinect控制闪电(特斯拉线圈)

http://v.youku.com/v_show/id_XMjY5NjE2MzQ0.html

 

游戏

Kinect破解玩马克思佩恩

http://v.youku.com/v_show/id_XMjM2NjYxNDg0.html

kinect破解玩求生之旅2 体感打僵尸

http://v.youku.com/v_show/id_XMjM3Mjk5MjQw.html

Kinect破解玩魔兽世界   

http://v.youku.com/v_show/id_XMjMzMDM1MzI0.html

Kinect破解玩街头霸王   

http://v.youku.com/v_show/id_XMjM4MjkzNjA0.html

Kinect破解玩超级马里奥兄弟 

http://v.youku.com/v_show/id_XMjI1NzY1OTM2.html

Kinect破解玩兵者诡道   

http://v.youku.com/v_show/id_XMjM0NDk2MDg4.html

Kinect破解玩 现代战争  

http://v.youku.com/v_show/id_XMjM1NjU4NjE2.html

 

       一群来自卡内基梅隆的学生使用Kinect的交互特点实现了18个各种各种的有趣的想法。他们仅仅用了两周的时间,从大二学生到研究生不等。让我们来看一下他们实现的奇思妙想吧!

       原文及视频信息链接http://golancourses.net/2011spring/projects/project-3-interaction/

1. Comic Kinect

      此示例主要应用了Kinect的骨架跟踪技术和玩家分段数据,将拳击和脚踢的交互通过可视的漫画效果表现出来,并且同步发出一些拟声效果。

2. Mario Boo

       当Kinect传感器检测到有人出现在视野内时,会出现一个幽灵保持在人的背后,随着人的运动而运动,并且会根据深度信息的远近而改变自身大小。

3. Magrathea

       Magrathea使用Kinect根据桌上的任何物体动态的产生地形图。摄像头读取桌上物体的不断变化深度信息,可以展现出类似地球地形逐渐进化的过程。

4. We be Monsters

       从中午舞狮中获取灵感,运用Kinect的骨架跟踪技术,两个人分别同坐自己的四肢操纵虚拟怪兽的四肢和头尾。

5. Mix&Match Interaction Toy

       使用了Kinect/OpenNI 骨架技术,使得3张卡片组成的人体可以跟玩家随动,并且通过手的滑动更换图片。

6. Kinect Flock

       作者创建了一个微粒系统,当用户移动时,像棉絮一样的东西会随之涌动,当用户静止时,则聚集到参与者的深度区域。

7. roboScan

       roboScan是一个3D模型+扫描仪,将一个Kinect设备固定在一个ABB 4400机械手上。设定好的动作和操作者同时控制机器人和摄像机的3D位置。Kinect的深度数据用来产生一个精确的外部环境的模型。

8. Neurospasta

        Neurospasta是一个需要全身投入的自由形态游戏平台。参与者可以控制他们各自基于Kinect的木偶,也可以通过功能设定控制别人的化身。

9. Will-o-the-Wisp

      这个设计充满了神秘色彩,玩家可以控制一个发光的球体,球体根据玩家手的运动而动,根据深度信息变大或变小。

10. Balloon Grab

       通过检测手掌张开还是握紧的手势,作者开发了一个基于模拟气球飞行的简易小游戏。

11. Hand-Tracking Visualization

       该软件使用手势控制音频的可视化效果,结合检测到场景中手距Kinect的深度信息。参与者手的位置,速度以及其他参数被用来创建一个交互式的声音的可视化效果。


        感觉Kinect的应用也应景一句话:Kinect的应用取决于你的想象空间!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lien0906/article/details/52598748

智能推荐

连接mysql数据库失败报错1045_对数据库管理工具 中1045错误的解决办法_joo haa的博客-程序员宅基地

原标题:对数据库管理工具 中1045错误的解决办法连接MySQL数据库时难免会遇到1045错误,主要是因为用户输入的用户名或密码错误被拒绝访问,如果不想重装,需要找回密码或者重置密码。 Navicat for MySQL 1045错误问题描述:1045-Access denied for user 'root'@'localhost'(using password: YES)解决办法是重新设置ro..._mysql查询变1045错误不能连接数据库

python如何将两个list合并成字典_怎么把两个列表合并成字典 论Python怎样将两个list合并为一个字典...-程序员宅基地

Python怎样把2个列表合成为一个字典?怎样把2个列表合成一个字典里了?如果你从一开始就选择低下头的话你就可以一直低着头。可是如果你一开始选择了昂着头的话你就永远不能低头了。荣辱说到底只是一瞬间的事情。小编的倔强让小编疲惫不堪的脖子选择始终昂着头。def listtodict(lista,listb): result = dict() if len(lista) == len(listb): f..._有两个列表,分别是姓名列表和年龄列表,把两个列表合成一个字典。姓名列表和年

python-爬虫项目<实现爬取豆瓣TOP250并保存于Excel和数据库>-程序员宅基地

python-爬虫项目<实现爬取豆瓣TOP250并保存于Excel和数据库>前言一、程序运行结果二、程序源码三、爬取思路前言  本文为原创,代码并非原创,如有侵权,请联系我删除。转自bilibili视频:Python爬虫编程基础5天速成(2021全新合集)Python入门+数据分析  本文仅为学习过程的记录,非常好的课程教学。那么从此项目中我们可以学到哪些东西呢?我总结主要有以下几点:  1、可以学习一个完整爬虫项目的编码思路;  2、可以学习在爬虫项目中几个常用的第三方库;  3、

爬取中关村产品报价网站_zol产品报价 数据爬取-程序员宅基地

import requestsfrom bs4 import BeautifulSoupimport reimport sysimport csvimport time# 中关村在线报价网url ="http://detail.zol.com.cn"# 已解锁功能funList = ["server"]# cookiecookie = "cookie" #换成自己的cookie_dict = {i.split("=")[0]:i.split("=")[-1] for i i_zol产品报价 数据爬取

LeetCode刷题小记——二叉树的最大深度_补充右侧代码区域的getdepth(treenode treenode)函数,要求能返回二叉树的最大-程序员宅基地

二叉树的最大深度么事刷一刷文章目录二叉树的最大深度题目解法自顶向下自底向上总结自顶向下自底向上自底向上题目解法思路:基于二叉树遍历的基础之上,带有层的信息即可。方法:自顶向下(先序遍历)自底向上(后序遍历)自顶向下思路:孩子的层数总是根节点的层数+1,所以当我们遍历到叶子节点时,更新最大层数值即可。代码如下:/** * Definition for a binary tree node. * public class TreeNode { * int val; _补充右侧代码区域的getdepth(treenode treenode)函数,要求能返回二叉树的最大深度

jquery 获取元素实际宽度高度-程序员宅基地

以前写代码中,每当需要获取元素的实际“宽度”(这里的宽度是指元素宽度加上其边距)时,都需要用元素宽度加上margin值才行,今天发现一个叫outerWidth(options)的方法 ,很好用。完成了原来需要用一段来操作做的工作。 这个方法不适用于 window 和 document 对象,可以使用 .width() 代替。 下面是其简单介绍 outerWidth(option

随便推点

猫映射(Arnold置乱变换)_猫映射的信息熵_dukangming的博客-程序员宅基地

目录Arnold置乱变换实现(HHU2021/03/16网络安全作业)Arnold置乱变换实现(HHU2021/03/16网络安全作业)需要的512*512的灰度图:512*512图像384次迭代复原import matplotlib.pyplot as plt # plt 用于显示图片import matplotlib.image as mpimg # mpimg 用于读取图片import numpy as npimport mathimg = mpimg.imread('dkm.jp_猫映射的信息熵

ssh 打开图形界面_ssh使用图形化界面-程序员宅基地

1. 安装ssh服务端sudo apt-get install openssh-server2.安装ssh客户端sudo apt-get install openssh-client3.检验是否安装成功 ps -e|grep ssh4. 修改远程服务器的ssh的config文件sudo vim /etc/ssh/sshd_config找到X11Forward..._ssh使用图形化界面

vue中element表格导出为excel_vue 导出excel自定义表格-程序员宅基地

导出excel*安装依赖*npm install -S file-savernpm install -S xlsxnpm install -D script-loader下载 Export2Excel.js 文件 这个文件没在npm上找到,所以在网上找的文件放入项目中。 Export2Excel.js(复制demo中的Export2Excel.js代码保存到项目static文件夹下,可根据自己的习惯保存路径)1、项目中使用引入 export_json_to_excel 方法 (使用相对_vue 导出excel自定义表格

第十六章 循环运行的例行性工作排程-程序员宅基地

相对於[color=red] at 是仅运行一次的工作,循环运行的例行性工作排程则是由 cron (crond) 这个系统服务来控制的。[/color]刚刚谈过 Linux 系统上面原本就有非常多的例行性工作,因此这个系统服务是默认启动的。另外, 由於使用者自己也可以进行例行性工作排程,所以罗, Linux 也提供使用者控制例行性工作排程的命令 ([color=red]crontab[/color..._查询使用者目前的循环性工作需用哪个指令和参数

蓝桥杯(基础练习)——矩阵乘法-程序员宅基地

问题描述  给定一个N阶矩阵A,输出A的M次幂(M是非负整数)  例如:  A =  1 2  3 4  A的2次幂  7 10  15 22输入格式  第一行是一个正整数N、M(1&lt;=N&lt;=30, 0&lt;=M&lt;=5),表示矩阵A的阶数和要求的幂数  接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值输出格式  输出共N行,每行N个整数,...

【POJ 1265】 Area (Pick定理+叉积求多边形面积)-程序员宅基地

【POJ 1265】 Area从原点开始走 输入的是每次行走x y移动的长度 可正可负 最终会走会起点问围成的多边形内部点数 边上点数 和面积用到三个定理:1.网格中两格点间经过的格点数+1 = 两点横向和纵向距离的最大公约数2.网格中多边形面积s 边上格点n 内部格点x 则有公式 s = x+n/2-13.网格中多边形面积等于从一点逆时针走一圈 每相邻两个点分别与