XNAゲームを開発しています。私のゲームでは、Kinectを使用してColor Stream
、Depth Stream
プレーヤーの画像のみを取得しています。このため、深度ピクセルをチェックして、が付いているピクセルを見つけますPlayerIndex > 0
。次に、これらの深度ポイントをMapDepthPointToColorPoint
メソッドを使用してカラーポイントにマッピングし、カラービデオからこれらのピクセルの色を取得します。
これは正常に機能しますが、パフォーマンスは非常に悪くなります(特にこれがゲームの場合)。カラーストリームを閉じて、ピクセルを黒色(つまり、プレーヤーインデックスのあるピクセル)に設定すると、すべてスムーズになります。しかし、カラーストリームを有効にすると、あまり効果的ではありません。
私はこれのために機能的に2つのことを試みAllFramesReady
ました:
1-
using (ColorImageFrame colorVideoFrame = imageFrames.OpenColorImageFrame())
{
//color logic
}
using (DepthImageFrame depthVideoFrame = imageFrames.OpenDepthImageFrame())
{
//depth logic
}
と
2-2-
using (ColorImageFrame colorVideoFrame = imageFrames.OpenColorImageFrame())
{
colorReceived=true;
}
if (colorReceived){
//color logic
}
using (DepthImageFrame depthVideoFrame = imageFrames.OpenDepthImageFrame())
{
depthReceived=true;
}
if (depthReceived){
//depth logic
}
The second one seems to have a better performance because it applies color and depth logic outside of using
blocks and returns resources to Kinect as soon as possible. But when the second player comes in performance decreases drastically. But sometimes the image of the player just disappears for 1 or 2 frames when I use the second choice.
What more can I do to increase performance of color and depth streams? Thanks for any help.