Прежде всего, я думаю, что ваш вопрос слишком общий, он будет зависеть от того, какие библиотеки/драйверы вы используете... Например, если вы используете openni, вы передаете информацию в одну сторону, а если вы используете kinect sdk, вам придется используйте другой метод...
2) да, вы можете получить доступ к изображениям RGB независимо от информации о глубине и обработать ее...
3) чтобы объединить два, я полагаю, вы имели в виду глубину и rgb. Это также зависит от используемых вами библиотек и драйверов. Также способ, которым вы хотите его хранить, например. облака точек, изображение и т. д.
Я предлагаю точно определить, чего вы хотите достичь, с какими библиотеками и в какой операционной системе, и отредактировать свой вопрос.
Я создал инструмент, используя openni2, opencv и Qt, я тестировал только камеры PrimeSense и Structure.io в Linux, но вы можете получить представление о том, что именно делать. Этот инструмент может выполнять некоторые базовые пороговые значения и сохранять данные в различных форматах (pcd, изображения, oni). Ссылка
Я также использовал почти такой же подход с openni1 и драйвером Avin и камерой Kinect1, в среду я могу загрузить код, и вы можете взглянуть, но в основном то же самое, только инициализация немного меняется.
В качестве основного контрольного списка вещей, которые вы должны сделать при работе с изображениями RGB-D:
- Инициализировать потоки камеры
- Создайте матрицу в opencv и скопируйте данные прямо в нее, обязательно прочитайте стандарт библиотеки, например, openni использует массивы RGB для цветовой матрицы, а KinectSDK использует RGBA (как минимум kinect SDK 2.0). Также убедитесь, что матрица глубины составляет 16 бит.
- Чтобы отобразить матрицу глубины, вы должны нормализовать ее и изменить на матрицу в оттенках серого.
- Вы можете выполнять любые манипуляции с изображениями, а затем сохранять их в желаемом формате.
- Проверьте ссылку, которую я дал вам, чтобы узнать, как сохранить ее в наиболее распространенных форматах.
Также вы можете взглянуть на библиотеку облаков точек, у них есть хорошая оболочка, которая сделает эту работу, и затем ее легко превратить в облако точек.
Я надеюсь, что эта информация поможет вам.
ОБНОВЛЕНИЕ: для Kinect 1 в Windows можно установить последнюю версию Kinect SDK и использовать openni2 без установки дополнительных драйверов.
- просто установите Kinect SDK 1.8 (не 2.0)
- Установить Openni2
- запустите NiViewer.exe, чтобы проверить, работает ли он (он находится в папке openni)
Если до сих пор все хорошо, то вам нужно только:
- Инициализировать openni
- Инициализировать поток цвета и глубины
- выполните основной цикл, в котором вы скопируете его на коврик OpenCV (вы можете использовать мой код, чтобы увидеть пример того, что я имею в виду)
- сделайте любой процесс, который вы хотите для изображения rgb
- создать облако точек для 3D-отображения/манипулирования, для этого я рекомендую библиотеку облаков точек, так как создать облако точек легко, и у них уже есть отображение для него.
Я могу дать вам фрагменты кода, если вы сомневаетесь в каком-либо из шагов, просто задайте новый вопрос об этом, и я отвечу на него.
Я надеюсь, это поможет вам
person
api55
schedule
22.03.2015