2012-11-08 53 views
2

我目前正在使用Kinect,并且我想绘制kinect的VGA图像上的骨骼骨骼。首先,我得到的图片从Kinect的:MFC和Kinect:在Kinect的图像上绘制一条线

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

在这里,我们有它在,所以我们可以用它做任何事情。最常见的方法是将其转换为位图并将其放在屏幕上,但我想对图像进行一些修改。我使用Direct2D将其显示在屏幕上,因此我需要一种可以转换为ID2D1Bitmap的图像格式,并且我必须能够在其上绘制线条和点。我需要什么样的图像?

回答

0

所以我认为,没有图像格式正在做我想要的。没问题,因为我发现了Direct2D的所有可能性。现在我实际上并没有改变图像,但对用户来说,它看起来是一样的。

1

锁定的缓冲区将包含一个大小为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值,这对于简单的图形工作应该是绰绰有余的。