MFC & Kinect:在 Kinect 的图像上画一条线
MFC & Kinect: draw a line on Kinect's image
我目前正在与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的所有可能性。现在,我实际上并没有更改图像,而是将其看起来相同。
相关文章:
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- 如何在 Win32 中用一条线连接 2 个文本框?
- C++ 如何在同一行中和在一条线上?
- 如何在SDL2窗口上使用Cairo绘制一条白色直线
- 在Opengl中绘制一条不显示C++的线
- 为什么当 while 循环中的 if 条件变为 false 时,我的函数不输出最后一条语句?
- x86 - 为什么编译器在下一条指令中插入看似毫无意义的JMP?
- CMake似乎忽略了一条线
- 在C 中使用Legacy OpenGL(即时模式)绘制一条厚线
- 在图像标签上画一条线并计算距离
- switch 语句结束和下一条语句之间的时间是否具有确定性(与路径无关)
- 如何在OMNET++中收到来自前一个模块的所有消息后将一条消息发送到下一个模块
- 一条线和两行声明之间的差异
- C++ OpenCV:检测两条线而不是一条线(Canny & findContours)
- 如何在C++中将边列表转换为邻接矩阵,其中包含连接到顶点的边数而不是一条边?
- 为什么 fstream 打印出文件的最后一条记录
- 如何在另一条消息(M1)之前调用带有消息(M2)的lambda函数,但输出要"M2 M1"?
- 如何在子小部件而不是父窗口小部件上绘制一条线
- 在C++中,文件中的下一条记录被非法更新
- MFC & Kinect:在 Kinect 的图像上画一条线