はい。ストリームを開かなくてもカラーフレームの座標を取得できますが、インデックスを作成するカラーデータがないため、それらを使用して有用なことを行うことはできません。
距離から色への意味のある変換はありません。2つの画像ストリームと座標変換関数が必要です。
- NuiImageGetColorPixelCoordinateFrameFromDepthPixelFrameAtResolutionを使用するにはどうすればよいですか?
それはひどく文書化された関数です。関数の引数とドキュメントは実際には意味があるので、代わりにNuiImageGetColorPixelCoordinatesFromDepthPixelAtResolutionを見てください。深度値と深度(x、y)座標が入力され、RGB(x、y)座標が出力されます。単純。
特定の座標でRGBデータを取得するには、最初にを使用してRGBフレームをNuiImageStreamGetNextFrame
取得し、INuiFrameTexture
インスタンスを取得する必要があります。LockRect
を取得するには、これを呼び出しNUI_LOCKED_RECT
ます。このオブジェクトのpBits
プロパティは、生のXRGB画像の最初のピクセルへのポインタです。この画像は、上から下、左から右の順序で行ごとに保存されます。各ピクセルは、パディングバイトを表す4つの連続したバイトで表され、その後にR、G、Bが続きます。
(100, 200)
したがって、位置のピクセルは
lockedRect->pBits[ ((200 * width * 4) + (100 * 4) ];
赤のチャネルを表すバイトは次のようになります。
lockedRect->pBits[ ((200 * width * 4) + (100 * 4) + 1 ];
これは標準の32ビットRGB画像形式であり、バッファは選択した画像操作ライブラリに自由に渡すことができます... GDI、WIC、OpenCV、IPLなど。
(注意...ピクセルバイトの順序が正しいかどうかは完全にはわかりません。XRGBだと思いますが、たとえばXBGRまたはBGRXの可能性があります。実際に返されるテストは簡単です)