Я работаю над проектом, который использует Kinect.
У меня есть этот основной проект, который использует три DLL. одна dll предназначена для распознавания речи, созданной в c ++, другая — для распознавания позы, созданной в c ++, третья dll — для распознавания жестов, выполненной в c #.
Речь использует аудио поток kinect, поза использует цвет и поток скелета, а жест использует поток скелета.
Теперь проблема заключается в том, что и аудио, и хорошо работают вместе с dll после инициализации kinects всех трех используемых потоков, но часть жеста написана на C #, и ей нужно повторно инициализировать скелетный поток kinect, чтобы использовать его в своем скелете, готовом из метода.
Если я только вызываю жест dll, он работает нормально, а если я только вызываю аудио и позирую, не вызывая жеста, они оба также работают нормально.
Но вызов всех трех из них приводит к запуску только последнего из них (жест или поза + аудио).
Так что, пожалуйста, если кто-нибудь имеет представление о том, с чем может быть проблема?
но часть жеста написана на C #, и она должна повторно инициализировать скелетный поток Kinect, чтобы использовать его в своем скелете, готовом из метода.
Это не должно произойти. Будь то библиотека жестов или поз, ни то, ни другое не должно инициализировать потоки данных Kinect. Вы должны делать все это, а затем вы передаете этим библиотекам данные. Если любая из этих библиотек берет на себя ответственность за инициализацию потоков, ее следует заменить.
Лучший пример того, почему они не должны инициализировать сами потоки — это именно то, с чем вы сталкиваетесь.
Если один или оба переходят через другой с инициализацией потока скелета, вам нужно либо получить код и исправить его, либо использовать другую библиотеку, либо написать свою собственную. Если в библиотеке нет функции, которая просто просматривает данные, которые вы пропустили, и не инициализирует поток.
Других решений пока нет …