Я пытаюсь просто получить 3D CameraSpacePoint позиция для данного 2D ColorSpacePoint из потока RGB.
Глядя на Методы CoordinatorMapper, единственные методы для отображения из цветовых координат:
MapColorFrameToDepthSpace Отображает кадр из цветового пространства в пространство глубины.
MapColorFrameToDepthSpaceUsingIBuffer Отображает кадр из цветового пространства в пространство глубины.
MapDepthFrameToCameraSpace Сопоставляет кадр из пространства глубины с пространством камеры.
MapDepthFrameToCameraSpaceUsingIBuffer Сопоставляет кадр из пространства глубины с пространством камеры.
Проблема в том, что на моем старом ПК, когда я пытаюсь использовать MapColorFrameToDepthSpace, скорость падает с ~ 33 кадров в секунду до ~ 10 кадров в секунду. Я предполагаю, что для преобразования 1920×1080 точек из 2D в 3D требуется некоторое время, но хотелось бы, чтобы был более быстрый способ, поскольку мне нужно преобразовать одну точку для своего приложения. Даже сэмплы SDK (как c ++, так и c #) работают со скоростью ~ 1 кадр / с для демонстраций преобразования «Цвет в камеру».
Даже если я использую MapDepthFrameToCameraSpace
затем MapDepthPointToCameraSpace
это все еще преобразует всю глубину кадра в пространство камеры, когда мне нужна только одна точка.
Есть ли способ конвертировать один ColorSpacePoint в CameraPoint?
Если так, как? Иначе, как я могу ускорить сопоставление ColorSpace и CameraSpace?
Существуют ли другие SDK (libfreenect2 и т. Д.), Которые предлагают более эффективный метод определения глубины для позиции в цветовом потоке?
Я использовал библиотеку с открытым исходным кодом PCL для использования с камерами RGDB (хотя Intel Realsence). Возможно, стоит проверить. Я не совсем уверен, насколько хорошо он будет работать с ограничениями вашего ноутбука, хотя.
Других решений пока нет …