2013-11-13 8 views
3

Я пытаюсь использовать OpenNI2 и NITE2 python bindings. Я под Windows 7, и у меня есть Kinect SDK1.8, OpenNI 2.2 и NITE 2.2, работающие без проблем в Visual C++ с их 32-битными версиями. У меня python 2.7.5 32 бит.Создание сбоев UserTracker в привязках python NITE2

Теперь я намерен перевести некоторые примеры из NITE на python, но я до сих пор не нашел, как создать UserTracker без сбоя программы (то же самое касается HandTracker). Я смог запустить предоставленный toy example (который не использует NITE). Это то, что я делаю, и ошибка я получаю -Какой я не нахожу очень informative-:

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 должны работать вместе без необходимости взломать код или понизить его.

Чтобы подвести итог: он работает для меня с питона bindinngs 2.2.0.30-5 из PyPi и Nite 2.0.0, но должен работать с Nite 2,2.

1

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

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

+0

Я столкнулся с некоторыми дополнительными проблемами, да ... Я не работаю с файлами ONI, но определенно существует множество ошибок в привязках python, которые я думаю следует уточнить. – asarasua

+0

У меня также была эта проблема с файлами ONI, я мог бы избежать использования fakenect fakeect вместо этого. – max