Создание сбоя UserTracker в привязках NITE2 python

Я пытаюсь использовать привязки Python OpenNI2 и NITE2. У меня 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, но все еще не работает.

Кто-нибудь смог заставить работать привязки python NITE2? Если так, то что-то мне не хватает?

2 ответа

Решение

Я наконец смог заставить это работать, но я думаю, что есть путаница с версиями, касающимися привязок Python в Nite и primesense, поэтому я поделюсь, если кто-то столкнется с такими же проблемами.

Когда я разместил вопрос, я использовал (как указано) привязки python, загруженные с сайта openNI и Nite 2.2.

Я попытался загрузить последнюю версию из pyPi, которая является 2.2.0.30-5, а затем я получил ошибку при инициализации nite2 (nite2.initialize()) потому что не смог найти метод niteDumpUserTrackerCalibrationDataToFile в C API.

Решение"? Я понизил Nite до версии 2.0, где этот метод действительно присутствует. Я думаю, что это не лучшее решение. Последние версии Nite и его привязок к Python должны работать вместе, без необходимости взламывать код или понижение версии.

Подводя итог: у меня он работает с python bindinngs 2.2.0.30-5 из pyPi и Nite 2.0.0, но должен работать с Nite 2.2.

Да, niteDumpUserTrackerCalibrationDataToFile отсутствует в 2.2, но есть и другая проблема в использовании NiTE 2.2 из Python.

NiTE 2.2 плохо работает с файловыми устройствами ONI, потому что он говорит, что ему требуется устройство "PrimeSense SOC". Это можно обнаружить, включив вход в систему в NiTE.ini

Этот форк связывания openni-python решает проблемы, упомянутые в этом посте относительно Nite 2.2. Я знаю, что он находится в процессе слияния с оригинальным проектом github openni-python.

Другие вопросы по тегам