Данные драйвера Kinect CLNU в формате EmguCV C# IImage

Я хочу взаимодействовать с kinect с помощью emguCV С#. Я использую драйверы CLNU.

Я не могу преобразовать вывод IntPtr CLNUDevice.getCameraColorFrameRGB32() в любой пригодный для использования формат. Я попробовал новое изображение (ширина = 480, высота = 640, шаг = 480 * 3, IntPtr)

Любая помощь приветствуется. Я считаю, что это версия кода С#, приведенная здесь. http://codelaboratories.com/forums/viewthread/518/


person Samarth Bharadwaj    schedule 13.04.2011    source источник


Ответы (2)


Это сработало для меня:

IntPtr rgb32 = CLNUIDevice.getCameraColorFrameRGB32();
MIplImage rgb32Image = new MIplImage();
rgb32Image = (MIplImage)Marshal.PtrToStructure(rgb32, typeof(MIplImage));

Где, конечно, нужен rgb32Image. Я не сразу понял, как использовать класс Image‹> с этим, хотя я уверен, что между MIplImage и Image‹> существует какое-то преобразование.

Надеюсь это поможет.

person sparkFinder    schedule 03.05.2011

Ну я понял, что библиотека dll содержит некую функцию, которая конвертирует данные в растровые изображения. так что теперь у меня есть изображение emgucv‹>. так что в основном вам нужно просто добавить это в NUIImage.cs, где вам нужно.

вернуть новое изображение (новый System.Drawing.Bitmap (640, 480, 640 * 4, System.Drawing.Imaging.PixelFormat.Format32bppRgb, depthImage.ImageData));

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

person samarth bharadwaj    schedule 26.04.2011
comment
Привет, Самарт, какую функцию вы использовали для получения объекта EmguCV Image‹›? - person sparkFinder; 03.05.2011
comment
Ну, в комплекте драйверов CLNU есть NUIImage.cs. Я использовал imageData IntPtr для преобразования в растровое изображение, а затем в изображение‹›. - person Samarth Bharadwaj; 04.05.2011