Kinect开发笔记(四)

这篇博客介绍了如何使用openni2和nite2从oni文件读取数据来实现人体跟踪。在Visual Studio中配置项目属性,添加库目录和依赖项,并确保将NiTE 2的Redist文件复制到正确的工作目录。文章强调了不要将文件放入Debug目录,而是要根据报错信息指向的工作目录放置。此外,通过调整mDevice.open()函数以打开oni文件,并设置正确的视频模式,可以实现从oni文件中读取并跟踪人体。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

openni2+nite2实现人体跟踪(oni文件读取数据)

 

参考博客:Heresy的博客:https://kheresy.wordpress.com/2013/01/07/basic-usage-of-nite2/

 http://viml.nchc.org.tw/blog/paper_info.php?CLASS_ID=1&SUB_ID=1&PAPER_ID=533

 

由于PrimeSense被Apple收购的关系,OpenNI官网已经关闭,而PrimeSense的NiTE也不再维护了,所以nite2的教程变得十分残缺不全,对于nite环境的搭建,现总结如下。

由于openni2的环境搭建之前已经总结,下面只对nite2的环境搭建进行说明。

首先感谢Heresy的博客提供的帮助。顺便吐槽一句,openni2和nite2的函数命名和使用确实比openni简明许多。

一、基础搭建环境

首先,同openni2一样,我们需要在vs中的属性页中对项目属性进行配置。添加对应的库目录,包含目录以及附加依赖项。

 

(摘自Heresy的博客)

其次,我们需要将NiTE 2的安装目录下的Redist文件夾里的所有文件copy到vs当前工程的工作目录。如图:

 

注意,不是debug目录!!!不然会报错!!

Debug目录为:F:\Kinect\test\oni-joint\x64\Debug,我们之前搭建openni2环境时需要把openni2的Redist文件夹里的内容放在这个debug目录下,如图:

 

 

ERROR1:没有添加nite2的对应文件到工程里,会出现找不到NiTE2.dll。

 

ERROR2:将nite2的文件添加到debug目录下,而不是工作目录。这才是最可怕的。会遇到:Could not find data file .\NiTE2/s.dat,current working directory = F:\Kinect\test\oni-joint\oni-joint

 

进行debug调试的会出现引发异常:

 

以上两个错误都不是oni文件出问题,而是应该把nite2的Redist文件夹中的文件添加到工作目录,而非debug目录。工作目录就是报错给出的current working directory。

 

 

  • 更改工作目录(可选)

如果觉得直接将文件复制到默认工作目录文件显得太杂,那我们可以更改当前工程的工作目录。即新建一个文件夹,把nite2的文件放进去,将vs工程的工作改为当前目录。

属性页->调试->工作目录

 

 

  • 读取oni文件实现Usertracker

用nite2实现人体跟踪网上有许多代码和解析(比如Heresy的博客介绍非常全面),这就不详细说明了。主要说明读取oni文件代替Kinect或其他深度相机作为输入。

只要将mDevice.open( ANY_DEVICE );改为mDevice.open(oni文件.oni)即可。如图:

 

同时,在下面建立深度和彩色模型时,参数应该与oni文件记录时的参数一致。其中,mDMode.setPixelFormat( );设置像素格式这个函数在不清楚具体格式的时候建议不使用,采用mDepthStream.getVideoMode();获取。具体使用如下:

// 创建深度数据流

VideoStream mDepthStream;

mDepthStream.create(mDevice, SENSOR_DEPTH);

 

// 设置VideoMode模式

VideoMode mDepthMode=mDepthStream.getVideoMode();

mDepthMode.setResolution(640, 480);

mDepthMode.setFps(25);

mDepthStream.setVideoMode(mDepthMode);

由于文件处理需要时间,我们要保证对每一帧做处理应该使用PlaybackControl对播放速率和是否重播进行控制。详细见Heresy的博客

 

 

 

  • 关于Kinect采集的oni文件在mUserTracker.create(&mDevice)时报错的问题

这里的‘memory access violation error’的报错与上面提到异常一致,在确认上述工作空间没问题后,再考虑oni文件出错。

详情请参考:http://viml.nchc.org.tw/blog/paper_info.php?CLASS_ID=1&SUB_ID=1&PAPER_ID=533

大致就是在记录需要修改一下函数的信息,如果是记录好的文件,可以使用一个叫oniFixer的小程序,进行检查和修正当前的oni文件。

使用方法为:打开cmd,进入onifixer所在的文件夹,输入命令:

oniFixer old.oni new.oni

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值