MFC & amp; Kinect: нарисуйте линию на изображении Kinect

В настоящее время я работаю с Kinect, и я хочу нарисовать кости скелета на VGA-изображении Kinect. Сначала я получаю картинку из kinect:

HRESULT hr = globalNui->NuiImageStreamGetNextFrame( videoStreamHandle, 0, &frame);
INuiFrameTexture * texture = frame.pFrameTexture;
NUI_LOCKED_RECT lockedRect;
texture->LockRect( 0, &lockedRect, NULL, 0);

Здесь мы имеем это в NUI_LOCKED_RECT, таким образом, мы можем сделать что-нибудь с этим. Наиболее распространенный способ — просто преобразовать его в растровое изображение и поместить его на экран, но я хочу внести некоторые изменения в изображение. Я использую Direct2D, чтобы вывести его на экран, поэтому мне нужен формат изображения, который можно преобразовать в ID2D1Bitmap, и я должен уметь рисовать на нем линии и точки. Какое изображение мне нужно?

2

Решение

Заблокированный буфер будет содержать простой массив размера width * height * 4 байт. Каждый пиксель представляет собой 4-байтовый XRGB (см. Документацию здесь: http://msdn.microsoft.com/en-us/library/jj131027.aspx). Изображение будет сохранено в порядке строк, поэтому пиксель в позиции x,y будет иметь индекс массива ((width * y) + x) * 4),

Это стандартный формат буфера изображений, который вы можете свободно использовать практически со всеми другими библиотеками для работы с изображениями, такими как собственный WIC от Microsoft, IPL, OpenCV и т. Д. У вас не должно возникнуть проблем с переборами в буфере и установкой значений RGB напрямую, чего для простой графической работы должно быть более чем достаточно.

1

Другие решения

Итак, я понял, что просто нет форматов изображений, которые делают то, что я хочу. Нет проблем, потому что я узнал обо всех возможностях Direct2D. Сейчас я на самом деле не меняю изображение, но для пользователя оно выглядит так же.

0

По вопросам рекламы [email protected]