MFC & Kinect:在 Kinect 的图像上画一条线

MFC & Kinect: draw a line on Kinect's image

本文关键字:Kinect 一条 图像 MFC      更新时间:2023-10-16

我目前正在与Kinect一起工作,我想在Kinect的VGA图像上绘制骨骼的骨头。首先,我从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的图像格式,并且我必须能够在其上绘制线路和点。我需要什么样的图像?

锁定的缓冲区将包含一个简单的大小width * height * 4字节。每个像素都是4个字节XRGB(请参阅此处:http://msdn.microsoft.com/en-us/library/jj131027.aspx)。该图像将存储在行订单中,因此位置x,y处的像素将具有数组索引((width * y) + x) * 4)

这是一种标准的图像缓冲区格式,您几乎可以与其他任何其他图像操纵库一起自由使用,例如Microsoft自己的WIC,IPL或OPENCV或其他任何图像。您应该没有问题在缓冲区迭代并直接设置RGB值,对于简单的图形工作就足够了。

所以我想知道没有图像格式在做我想要的。没问题,因为我发现了Direct2D的所有可能性。现在,我实际上并没有更改图像,而是将其看起来相同。