在NITE2 python绑定中创建UserTracker崩溃

时间:2013-11-13 19:10:45

标签: python python-2.7 kinect openni primesense

我正在尝试使用OpenNI2和NITE2 python bindings。我在Windows 7下,我的Kinect SDK1.8,OpenNI 2.2和NITE 2.2在32位版本的Visual C ++中没有问题。我有python 2.7.5 32位。

现在,我的目的是将NITE中提供的一些示例翻译成python,但我仍然没有找到如何在没有程序崩溃的情况下创建UserTracker(HandTracker也是如此)。我已经能够运行提供的toy example(不使用NITE)。这就是我正在做的和我得到的错误 - 我找不到非常有用的信息 - :

In [1]: from primesense import openni2, nite2

In [2]: nite2.initialize()

In [3]: dev = openni2.Device.open_any()

In [4]: ut = nite2.UserTracker(dev)
---------------------------------------------------------------------------
NiteError                                 Traceback (most recent call last)
<ipython-input-4-5be0b82b0a2b> in <module>()
----> 1 ut = nite2.UserTracker(dev)

C:\Python27\lib\site-packages\primesense-2.2.0.30_5-py2.7.egg\primesense\nite2.p
yc in __init__(self, device)
    198             self._devstruct = _NiteDevStruct()
    199             self._devstruct.device = device._handle
--> 200             c_api.niteInitializeUserTrackerByDevice(ctypes.byref(self._d
evstruct), ctypes.byref(handle))
    201         HandleObject.__init__(self, handle)
    202         _registered_user_trackers.add(self)

C:\Python27\lib\site-packages\primesense-2.2.0.30_5-py2.7.egg\primesense\_nite2.
pyc in wrapper(*args)
    693         res = func(*args)
    694         if res != NiteStatus.NITE_STATUS_OK:
--> 695             raise NiteError(res)
    696         return res
    697

NiteError: NiteStatus.NITE_STATUS_ERROR

我已经尝试初始化设备的深度流,然后再将其传递给UserTracker创建者,但仍然无法正常工作。

有没有人能够使NITE2 python绑定工作?如果是这样,有什么我想念的吗?

3 个答案:

答案 0 :(得分:2)

我终于能够使它工作了但是我认为关于Nite和primesense python绑定的版本有些混乱,所以我会分享以防有人遇到同样的问题。

当我发布我正在使用的问题(如图所示)从openNI网站和Nite 2.2下载的python绑定。

我尝试从pyPi下载最新版本,2.2.0.30-5然后在初始化nite2(nite2.initialize())时遇到错误,因为它无法找到方法niteDumpUserTrackerCalibrationDataToFile在C API中。

“解决方案”?我将Nite降级到版本2.0,其中该方法实际存在。我认为这是最佳解决方案。 Nite及其python绑定的最新版本应该可以协同工作,而无需破解代码或降级。

总结一下:它适用于pyPi和 Nite 2.0.0 python bindinngs 2.2.0.30-5 ,但是应该适用于 Nite 2.2

答案 1 :(得分:1)

是的,2.2中缺少niteDumpUserTrackerCalibrationDataToFile,但在使用Python的NiTE 2.2时还存在另一个问题。

NiTE 2.2与ONI文件设备不兼容,因为它说它需要“PrimeSense SOC”设备。通过启用NiTE.ini

中的登录可以发现这一点

答案 2 :(得分:0)

This fork的openni-python绑定的解决了关于黑夜2.2此讯息中提到的问题。我知道它正在被合并回original openni-python github项目。