3

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

现在,我的意图是将 NITE 中提供的一些示例转换为 python,但我仍然没有找到如何创建 UserTracker 而不会导致程序崩溃(HandTracker 也是如此)。我已经能够运行提供的玩具示例(不使用 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 绑定工作?如果是这样,我有什么遗漏吗?

4

3 回答 3

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 绑定应该可以协同工作,而无需破解代码或降级。

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

于 2013-11-14T10:59:23.417 回答
1

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

NiTE 2.2 不能很好地与 ONI 文件设备配合使用,因为它说它需要“PrimeSense SOC”设备。这可以通过启用登录 NiTE.ini 来发现

于 2013-11-16T09:33:29.990 回答
0

openni-python 绑定的这个分支解决了这篇文章中提到的关于 Nite 2.2 的问题。我知道它正在合并回原来的openni-python github 项目。

于 2019-02-01T12:49:36.810 回答