Создание 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, но все еще не работает.

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


person asarasua    schedule 13.11.2013    source источник


Ответы (3)


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

Когда я разместил вопрос, я использовал (как указано) привязки 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 .

person asarasua    schedule 14.11.2013

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

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

person eruffaldi    schedule 16.11.2013
comment
Я столкнулся с еще некоторыми проблемами, да ... Я не работаю с файлами ONI, но определенно есть куча ошибок в привязках python, которые, как мне кажется, следует улучшить. - person asarasua; 18.11.2013
comment
У меня также была эта проблема с файлами ONI, я мог вместо этого использовать fakenect freenect. - person max; 23.04.2014

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

person pcp    schedule 01.02.2019