Создание сбоя 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.