1

ブーストasio(シリアル化なし)を介してクライアントにkinect深度マップを送信しようとしていますが、非同期または同期を試す方が良いです(今のところ、私のアプローチは同期です):

このようなもの..

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;
4

1 に答える 1

0

sizeof(pDepthMap)はポインターのサイズですが、実際に必要なのは、ポインターではなく、構造体を送信することです。

ASIOシリアライゼーションの例を見て、 Boost.Serialization を使用してどのように実行できるかを確認してください。Boost.Serialization を使用したくない場合は、独自の方法で独自の構造を「シリアル化」できます。

于 2012-11-04T11:34:22.780 に答える