如何通过boost asio向客户端发送OpenNI深度图?

时间:2012-11-01 16:35:03

标签: c++ boost boost-asio kinect openni

我试图通过boost asio向客户端发送kinect深度图(无序列化) 尝试异步或同步更好(现在我的方法是同步):

像这样smthg ..

server:
//depthmap
const XnDepthPixel* pDepthMap = depth.GetDepthMap();
boost::asio::write (socket, boost::asio::buffer (pDepthMap, sizeof(pDepthMap))); //sizeof isnt right..

client:
XnDepthPixel* depth;
socket.read_some( boost::asio::buffer (&depth, sizeof(XnDepthPixel)* ?? )); //send sizeof(pDepthMap) before..

编辑: XnDepthPixel的定义(也来自OpenNI):

/** Defines the depth values type (16-bit values). **/
typedef XnUInt16 XnDepthPixel

和XnUInt16:

/** 16-bit unsigned integer. */ 
typedef unsigned short      XnUInt16;

1 个答案:

答案 0 :(得分:0)

sizeof(pDepthMap)只是指针的大小,但你真正想要的是发送一些结构,而不是指向它的指针。

请查看ASIO 序列化 example,看看如何使用Boost.Serialization完成。 如果您不想使用Boost.Serialization,您可以通过自己的方式以某种专有方式“序列化”您的结构。