2016-10-18 9 views
1

Я видел примеры использования EMGUCV на обычных изображениях RGB, снятых с Kinect, например this, но тогда у вас может быть веб-камера. Я заинтересован в получении Point Cloud, которое позже я смогу использовать для триангуляции.Получение облака точек с помощью Kinect и EMGU?

Я попытался «вручную» преобразовать DepthFrame в файл точечного облака. В кадре глубины у вас есть X, Y и значение глубины, которое я преобразовал в точки XYZ для файла .ply. Результаты искажены и бесполезны.

Теперь я заметил, что EMGUCV имеет this method, который отображает облако точек в объект EMGUCV Mat. Я просто не знаю, как синтаксис должен быть для этого, поскольку нет примеров людей, которые просят об этом или каких-либо представленных примерах людей за EMGUCV.

Вот что я пытался, Kinect даже не кажется включенным, и успех всегда возвращает false.

public void test() 
{ 
    KinectCapture kc = new KinectCapture(KinectCapture.DeviceType.Kinect, KinectCapture.ImageGeneratorOutputMode.Vga30Hz); 
    Mat m = new Mat(); 
    bool success = kc.RetrievePointCloudMap(m); 
} 

У меня также была проблема, что он продолжал бросать исключение при строительстве объекта KinectCapture, this было мое решение.

ответ

1

Если вы похожи на меня, вам просто интересно получить облако точек, которое вы можете превратить в сетку, вам не интересно делать всю эту причудливую математику. К счастью, Fusion делает это для вас, если вы пишете 500 строк кода. В примере с Microsoft было много ошибок, событий, булевых объектов, изображения, которые визуализировались по-разному, сочетания нескольких облаков точек и т. Д. И т. Д. Много ненужного (для меня) кода. Их примером было 3800 строк кода. Я пробовал вырезать его, вы можете, возможно, сократить это еще больше.

У меня были некоторые проблемы вставив его здесь, так как это довольно долго, но the link is here

Попробуйте дурачиться со значениями, и посмотрим на пример проекта Kinect Fusion Microsoft, это «украден» полностью (99%) оттуда , Это откроет ваш датчик, возьмет глубину + цветное изображение и превратит его в сетку. Как вы его сохраняете, зависит от вас. Я сделал небольшой класс .ply-outputter, который они также предоставили в своем примере.

1

Вы проверили функции Kinect SDK? Существует множество функций, которые позволяют вам писать правильные облака точек без особых проблем - просто используя Kinect SDK.