#computer-vision #kinect #motion-detection #openni #primesense
#компьютерное зрение #kinect #обнаружение движения #openni #primesense
Вопрос:
Я установил последнюю версию openni и NITE в следующем порядке:
Openni 1.3.4.6 unstable development edition x64 NITE 1.4.2.5 unstable development edition x64 Датчик Avin2 kinect x64 из каталога ../platforms/win32
Я использую 64-разрядную версию Windows 7, подключил Kinect и не использую фиктивные узлы. При попытке запуска выдается ошибка: «Не удалось перечислить один или несколько из следующих узлов»
Мой modules.xml содержимое:
<Modules>
<Module path="C:OpenNIBin64nimRecorder64.dll" />
<Module path="C:OpenNIBin64nimMockNodes64.dll" />
<Module path="C:OpenNIBin64nimCodecs64.dll" />
<Module path="C:PrimeSenseNITEFeatures_1_3_1Bin64XnVFeatures64_1_3_1.dll" configDir="C:PrimeSenseNITEFeatures_1_3_1Data" />
<Module path="C:PrimeSenseNITEFeatures_1_4_1Bin64XnVFeatures64_1_4_1.dll" configDir="C:PrimeSenseNITEFeatures_1_4_1Data" />
<Module path="C:PrimeSenseNITEFeatures_1_4_2Bin64XnVFeatures64_1_4_2.dll" configDir="C:PrimeSenseNITEFeatures_1_4_2Data" />
<Module path="C:PrimeSenseNITEHands_1_3_1Bin64XnVHandGenerator64_1_3_1.dll" configDir="C:PrimeSenseNITEHands_1_3_1Data" />
<Module path="C:PrimeSenseNITEHands_1_4_1Bin64XnVHandGenerator64_1_4_1.dll" configDir="C:PrimeSenseNITEHands_1_4_1Data" />
<Module path="C:PrimeSenseNITEHands_1_4_2Bin64XnVHandGenerator64_1_4_2.dll" configDir="C:PrimeSenseNITEHands_1_4_2Data" />
</Modules>
Я также пытался использовать предыдущую версию OpenNI и NITE с тем же результатом. Я также ввел лицензионный ключ в SamplesConfig.xml и в нем нет других изменений. У него есть производственные узлы для изображения и глубины, и это все.
Я хотел бы знать, работают ли драйверы Avin2 sensor kinect с последними версиями openni. Каков порядок установки и какой драйвер мне установить, чтобы kinect работал с openni 1.3.4.6?
Спасибо
-Сиддхартх
Ответ №1:
- Проверьте, все ли библиотеки dll существуют
- Проверьте правильность вашего лицензионного ключа (для некоторых модулей требуется действующий лицензионный ключ). Зарегистрируйте это с помощью
niReg
команды - Проверьте, что все configDir существуют, доступны для чтения, с их конфигурационными файлами внутри
- Немедленно остановите свою программу после
context.InitFromXmlFile(strFileName, scriptNode, pErrors)
(чтобы вы могли выполнить следующий шаг) - Прокомментируйте все
Module
узлы. Ошибка должна исчезнуть, но теперь у вас есть нерабочая программа. - Один за другим демонтируйте модули и проверьте, не появляется ли ошибка. Теперь вы знаете, что такое неисправный модуль.
Комментарии:
1. Извините за задержку с ответом, но вот что я исследовал: 1) Все библиотеки dll действительно существуют, я проверил с предыдущей сборкой openni. 2) Это меня озадачивает. Я думал, что мне не нужен лицензионный ключ для NITE, поскольку новейшие версии не требуют его ввода. В любом случае, я ввел лицензионный ключ в sampleConfig.xml использование тега license. 3) Я сталкивался с этой проблемой раньше, если я устанавливал openni в каталог program files. Я решил эту проблему, установив ее в корневой каталог, например C:OpenNI и C:PrimesenseNITE. Таким образом, у меня здесь нет проблем только для чтения.
2. 4) Сбой при инициализации из XMLFILE, но ошибка существует, даже если отключить kinect от моей системы, заставляя его думать, что это проблема с драйвером. 5 и 6) Сделал это, и я все еще получаю, что устройство primesense не обнаружено, а перечисленные узлы не созданы. Теперь я заметил, что на моем ноутбуке (который является HP elitebook 8760w) установлен USB-накопитель eSATA, 2 USB-накопителя ss и еще 2, которые, как я думаю, являются usb 2.0. После некоторого поиска я обнаружил, что kinect не работает с некоторыми портами usb 3.0?
3. В любом случае, не могли бы вы сообщить мне, в каком порядке вы установили свои openni, nite и драйверы? У вас есть драйверы сенсора kinect, драйверы avin2, в каталоге openni есть установщик драйверов. Что следует установить и в каком порядке? Спасибо
4. Я использую Linux и установил: OpenNI и Sensor. Они работают без карты NITE для глубины и простой точки касания. Когда мне понадобились более продвинутые функции, я установил NITE. Когда я установил NITE, он выдал мне сообщение «Не удалось перечислить один или более из следующих узлов», поскольку для этого требовалась действующая лицензия. Даже если лицензия была в файлах xml, ее необходимо было зарегистрировать в
niReg
. Вы проверили, какой модуль не может быть перечислен?5. Я вроде понял, что произошло. Итак, я понял, что мне пришлось установить драйверы avin2, доступные в каталоге Bin, а не те, что в win32 platforms. Но после этого я начал получать ошибки о том, что не удалось создать разделяемую память. Мой ноутбук является офисным ноутбуком, и когда я вошел в систему как системный администратор, я, наконец, смог заставить образцы работать. Но когда я вошел в систему как локальный пользователь, произошел сбой и выдал мне ошибку. Похоже, у меня какие-то проблемы с разрешениями..
Ответ №2:
- Удалите все предыдущие драйверы kinect, если таковые имеются
- Загрузите драйвер avin2 с https://github.com/avin2/SensorKinect
- Выполнить SensorKinect-unstablePlatformWin32Driverdpinst-amd64.exe (или dpinst-x86.exe если ваша система 32-разрядная)
Затем запустите демонстрационную программу (NIViewer), чтобы проверить, все ли в порядке..
Вот и все..
Ответ №3:
В этой версии openni были ошибки с настройками UAC в Windows 7. Последняя версия openni, которая поддерживает калибровку без использования ПО умолчанию, работает «из коробки».
Ответ №4:
Я не знаю почему, но по какой-то причине стабильные версии OpenNI, промежуточного программного обеспечения и аппаратного обеспечения просто несовместимы с драйвером avin2.
Я использую Windows 7 x64, и когда я все удалил и перешел на нестабильные версии OpenNI, Nite и PrimeSense Sensor, он работал с 64-разрядным драйвером avin2 (SensorKinect093-Bin-Win64-v5.1.2.1.msi).
Таким образом, в основном, ИСПОЛЬЗУЙТЕ ТОЛЬКО НЕСТАБИЛЬНЫЕ ВЕРСИИ.