求openni2下载 NiTE 2资源

Ubuntu下安装配置OpenNI实战笔记_Linux教程_Linux公社-Linux系统门户网站
你好,游客
Ubuntu下安装配置OpenNI实战笔记
来源:Linux社区&
作者:linxiomgmin
1. 库OpenNI SensorKinect NITE的安装
step1 :下载 OpenNI库文件
选择“OpenNI Binaries”-&“Unstable”-&“...for ...”,点击“Download”。如下图所示:
setp2: 下载完成后解压,得到文件夹:OpenNI-Bin-Dev-Linux-x86-v1.5.2.23
(这些我已经下载好了,就在“kinect编程”这个文件夹里面)
cd进入解压后的路径:cd kinect编程/OpenNI-Bin-Dev-Linux-x86-v1.5.2.23/
setp3: 安装:$ sudo ./install.sh
(2)SensorKinect
step1 下载SensorKinect
执行命令:$git clone /avin2/SensorKinect.git
如果提示没有git这个命令,则先下载git,打开终端:sudo apt-get install git
过程比较慢.......要耐心的等.....
step2:结束后会在当前路径出现一个文件夹SensorKinect,cd进SensorKinect/Platform/Linux /CreateRedist,之后$ sudo ./RedistMaker,这里可能会提示找不到命令,
只需右键 RedistMaker文件,属性-权限-在Allow executing file as programming前面打勾(这样就可以执行RedistMaker 这个脚本了)
耐心等.........
step3:这时,当前文件夹(即CreateRedist)下会多出一个final的文件夹,进去,把里面的Sensor-Bin-Linux-x86-v5.1.0.25.tar.bz2复制出来,再解压,再放回去。(有人可能会问,为什么不直接在里面解压,我试了,没那个权限,sudo chmod 777 Sensor-Bin-Linux-x86-v5.1.0.25.tar.bz2 也没办法。)
(注意:执行完setp2后,上层目录Linux下还多了个Redist文件夹。里面也有个 Sensor-Bin-Linux-x86-v5.1.0.25.tar.bz2 跟CreateRedist里面的那个Sensor-Bin-Linux-x86-v5.1.0.25.tar.bz2 一样。网上有复制这个出来,解压再放回去,好像也可以。)
step4:进入Sensor-Bin-Linux-x86-v5.1.0.25文件夹,执行sudo ./install.sh
如果提示没那个命令,解决办法同step2。
Step 5安装usb库--LibUSB
1) Run: sudo apt-get install libusb-1.0-0-dev
2) Run: sudo apt-get install freeglut3-dev
如果到这里还有问题的话,可以去看 SensorKinect里面的readme。
选择“OpenNI Compliant Middleware Binaries”-&“Unstable”-&“...Ubuntu...”,下载就好了。
下载完成后解压,进入目录$ ./install.sh即可。
2.开发环境配置
我用的是codeblock。下面讲个跟codeblock有关的openframeworks的安装方法:
首先,你要先安装codeblocks
sudo apt-get install codeblocks
接下来在下载openframeworks (32位的电脑)
of_preRelease_v0062_linux_FAT.tar.gz
下载在Linux公社的1号FTP服务器里,下载地址:
密码:www.muu.cc
在 2012年\3月\Ubuntu下安装配置OpenNI实战笔记
下载方法见
然后执行:
sudo openframeworks/scripts/linux/ubuntu/install_dependencies.sh
sudo openframeworks/scripts/linux/ubuntu/install_codeblocks.sh
后来,我的codeblock老是出问题,就改在QtCreator下开发了,QtCreator下的话,什么也不用干,只需把openni的库连接过去就成了,具体见
相关资讯 & & &
& (01/14/:19)
& (12/23/:35)
& (11/29/:27)
& (12/24/:28)
& (12/03/:14)
& (11/27/:09)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款&&& 今天跟博主@奇奇萌讨论一些有关OpenNI 2的安装问题,下面根据自己今天下午的安装做个总结,和大家分享,水平有限,请大家多多指导!
&&& 在OpenNI 1.X的时候,OpenNI的整个framework是采用类似plug-in的机制,让开发者可以利用OpenNI所提供的标准框架,使用中间件(Middleware)提供的人体跟踪技术、手部跟踪等功能,不过在OPenNI 2 SDK的时候,为了简化架构、增加开发的弹性,所以把这个架构移除了,现在的整个框架如下图所示(截取于OpenNI官网):
&&& 上图中绿色部分就是OpenNI 2所提供的功能,但中间件已经和之前的版本大不相同了,具体可以參考官方的
&&& 目前本人了解到的信息主要体现在:
&&& 1. 目前所提供的API只有C/C++(绝大部分C++);还没有提供.NET Framework、java等的语言特性;
&&&&2. 由于结构和功能都变简单了,所以OpenNI 2的安装相对于1.x要简单了,且OpenNI 2和之前的版本可以同时安装共存,同时使用。
&&& 3. 关于驱动的问题,如果你使用的ASUS Xtion系列的感应器或者是PrimeSense自己的感应器,OpenNI 2 SDK本身就包含了这些必要的驱动,不需要借助于第三方驱动工具;对于你使用的是微软的Kinect for Xbox 360 或者之后的Kinect for Windows感应器的话,可以借助微软官方的Kinect for Windows SDK开发工具(目前是),而之前的SensorKinect是针对OpenNI 1.x开发的,所以在OpenNI 2的情况下是多余的,且无法使用,但SensorKinect会不会针对OpenNI 2做进一步开发,那就不知道了。
&&& 4. 对于之前开发的程序,应该没办法在OpenNI 2SDK下正常运行,具体如何迁移到2 SDK中,官网有提供说明。
&&& 下面是安装OpenNI 2 SDK的简要步骤:
&&& 一、下载微软官方的Kinect for Windows SDK开发工具(目前是)并安装;
&&& 二、下载,并安装;
&&& 三、下载并安装;
&&& 四、 运行&NiViewer&
结果如下所示:
注:由于本人不帅巨丑,所以我把右边显示的彩色部分删去了,如果显示的是其它的,表示没安装成功,重新安装吧~~~
&&& 五、运行NITE 2 提供的Samples/Bin下的SimpleHandTracker.exe
结果如下所示:
获取的是第一只手的三维坐标信息。
&&& 六、安装之前的版本或者和Kinect for Windows SDK 共存的问题,可以参考@奇奇萌的博文。
阅读(...) 评论()ONI2AVI kinect+NITE/openni+c++,实现彩色图像和深度 的录制,保存为文件.oni格式。 Special Effects 图形 处理 238万源代码下载-
&文件名称: ONI2AVI
& & & & &&]
&&所属分类:
&&开发工具: Visual C++
&&文件大小: 51993 KB
&&上传时间:
&&下载次数: 106
&&提 供 者:
&详细说明:kinect+NITE/openni+c++,实现彩色图像和深度图像的录制,保存为文件.oni格式。-kinect+NITE/openni+c++, color image and the depth image recording, save it as a file. oni format.
&[]:很好,推荐下载&[]:很好,推荐下载
&近期下载过的用户:
&相关搜索:
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - 对传感器观测实体的身份识别与判断是信息融合
技术的一个非常重要的任务,
&[] - 透^CY8C29466的I2CB接G-SENSOR(DMARD05),可以控制G-SENSOR的任意幼鳌
&[] - 关于kinect的初级开发教程 对刚入门的新手比较有用
&[] - OpenNI kinect
handdetect
&[] - MS的kinec SDK和OpenNI都提供了人体骨骼跟踪的算法,人体骨骼跟踪算法在kinect人体行为识别中非常重要,该识别过程通常被用来作为行为识别的第一步,比如说,通过定位人体中的骨骼支架,可以提取出人手的部位,从而可以把手的部分单独拿出来分析,这样就达到了手势的定位,而后面的手势识别则可以在
&[] - 基于微软的体感开发工具Kinect的三个数据流中的深度数据流。用该软件可以打开深度摄像头,并获得物体的深度值。
&[] - 从网上下载的Kinect开发教程五:OpenNI获取人体骨架.内有博客网址
&[] - 用kinect分别保存深度图和色彩图的小程序
&[] - MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于人工辅助线程没有消息循环,而用户界面线程有自己的消息队列和消息循环
&[] - Kinect获取深度和彩色视频保存为.oni格式【原创】 NUI Kinect OpenNI Nite 追踪 玩家 骨骼 流程 - pswzyu的技术博客 - ITeye技术网站
博客分类:
/wordpress/?p=47
搬家中, 清关注
qt nui ni ui kinect primesense WAVI Xtion 体感
用语约定:
玩家:程序开发的终端用户, 在设备前玩游戏的家伙
对玩家骨骼的追踪是Nite中的重要功能之一, 下面我就为大家简单分析以下Nite自带的 “Players” 这个例子的主要流程
要分析代码要现精简代码, 将主要的流程提取出来, 进行分析, 例子的核心文件只有三个, main.cpp,
ScreenDrawer.h, ScreenDrawer.cpp, 因为我们只是分析追踪的流程, 因此画图部分可以略去, 首先分析
首先我们要剥离的是有关画图显示的代码, 这样, 关于gl的代码我们就可以跳过
然后关于这个例子中有一个玩家会话控制的功能, 即玩家短暂的离开后再次回来可以让程序很快地恢复校准, 同时为上层的游戏提供一个“中间层”,
将先后加入或更换的玩家对应到游戏中的角色,会话控制的代码是写例子的人自己的实现, 也可以不看(说实话我真的没看懂), 就是
AssignPlayer , FindPlayer, LostPlayer, 这几个函数
接着可以略去的代码是有关深度图录像的函数, StopCapture 和 StartCapture
从入口函数入手
首先是从xml创建环境, 然后初始化并检查生产节点, 接着检查生产节点的能力, 这部分使用了上边定义的宏, 用来检查错误并退出main函数。
接着开始绑定回调函数, 将玩家事件, 校准事件绑定到对应的处理函数,
程序的流程
OpenNI 的数据获取和处理都是在他的更新函数
g_Context.WaitOneUpdateAll(g_DepthGenerator); 中进行的,
你绑定的回调函数也是在这个函数中被调用的, OpenNI有多种更新函数, 具体差别看文档~在更新函数中, OpenNI 等待并搜集所有的数据,
和之前缓存的数据一同进行处理, 如果符合某个事件的条件, 则调取你设定的回调。 这个函数一般要循环调用以持续对数据进行更新, 在官方的例子中,
他是使用opengl的显示循环进行循环调用的。接下来我们针对例子进行分析:
当一个玩家出现在kinect的“视野”中后, openni会对其进行识别, 如果发现这“东西”像是个人, 则调用例子中的 NewUser
函数, 例子中 NewUser 会使用
g_UserGenerator.GetPoseDetectionCap().StartPoseDetection(“Psi”, user);
函数开启这个玩家的姿势检测, 检测的姿势叫做 “Psi”, 这个姿势就是我们说的 “投降” 姿势, 双手举过头顶~
如果此时玩家做出了 “投降” 姿势, 则 PoseDetected 这个回调会被调用, 在这个函数中,
例子使用g_UserGenerator.GetSkeletonCap().RequestCalibration(user, TRUE);
请求对玩家进行 “校准”, 就是对其尝试进行骨骼模式匹配, 同时例子使用
g_UserGenerator.GetPoseDetectionCap().StopPoseDetection(user);
停止玩家的姿势检测, 我实验了一下这个地方如果不停止姿势检测的话也是没有问题的, 但是如果不需要再检测玩家姿势的话就停掉吧, 毕竟可以省点资源嘛
之后openni会用一段时间对玩家进行骨骼模式匹配, 匹配不一定能够成功, 和玩家出现在kinect设备视野中的完整程度有关,
有过完整出现的话基本是可以顺利识别的。 当匹配完成后, 无论成功失败, 都会调用
CalibrationCompleted(xn::SkeletonCapability& skeleton, XnUserID
user, XnCalibrationStatus eStatus, void* cxt) 这个函数,
我们可以看到这个函数中有对校准结果的检测, XN_CALIBRATION_STATUS_OK 代表成功, 成功的话, 例子调用了
g_UserGenerator.GetSkeletonCap().StartTracking(user) 开始对此用户进行骨骼追踪
至此, 就可以获取用户的骨骼数据了, 在 ScreenDrawer.cpp 中的 DrawLimb(XnUserID player,
XnSkeletonJoint eJoint1, XnSkeletonJoint eJoint2) 函数中,
g_UserGenerator.GetSkeletonCap().GetSkeletonJointPosition(player,
eJoint1, joint1), eJoint1 这个参数是从下边的DrawDepthMap函数的后边传过来的, 分别代表身体关节,
可以的值有
XN_SKEL_HEAD,
XN_SKEL_NECK,
XN_SKEL_LEFT_SHOULDER, XN_SKEL_RIGHT_SHOULDER,
XN_SKEL_LEFT_ELBOW, XN_SKEL_RIGHT_ELBOW,
XN_SKEL_LEFT_HAND, XN_SKEL_RIGHT_HAND,
XN_SKEL_TORSO,
XN_SKEL_LEFT_HIP, XN_SKEL_RIGHT_HIP,
XN_SKEL_LEFT_KNEE, XN_SKEL_RIGHT_KNEE,
XN_SKEL_LEFT_FOOT, XN_SKEL_RIGHT_FOOT
注意和改进
写到这里, 基本的流程就分析完了, 程序中有些问题
这里要注意一下, 由于openni是用C写的, 所以如果你要使用C++进行开发的话你的回调函数要使用静态成员函数, 或使用非成员函数, 这样的话才可以在编译时确定函数的地址, 进行绑定
例子程序有个缺点, 就是一个玩家校准失败后, 就不能再进行校准, 因此可以将 main.cpp CalibrationCompleted 函数修改如下
if (eStatus == XN_CALIBRATION_STATUS_OK)
...... // 原有代码
printf("请求重新校准 %d 号玩家!\n", int(user));
g_UserGenerator.GetSkeletonCap().RequestCalibration(user, false); // 重新请求校准
还有个小问题, 就是 main.cpp CalibrationEnded 这个函数是没有用的~, 下边回调中并没有绑定, 整个程序中也没有用到
浏览: 52542 次
这样配置了还是无效...
太感谢了!
哥们!真的感谢了。解决了我一大难题啊!
你添加了 &Accept-Encoding&quot ...

我要回帖

更多关于 openni nite 的文章

 

随机推荐