Kinect カメラからカラー ピクセルに対応する深度を (できるだけ早く) 取得する方法を探しています。
MapDepthFrameToColorFrame 関数を見つけました。しかし、それは特定の深度位置での色しか得られません。私は反対の色が欲しいです。
これが必要な理由は、RGB イメージの位置をクリックして、そのピクセルの位置を取得できるようにするためです。
MapDepthFrameToColorFrame からのすべての結果をループするよりも速くこれを行う方法はありますか?
ここでの問題は、カメラと IR エミッターの配置方法が原因で、すべてのカラー ピクセルに深度が割り当てられないことです。Kinect に向かい、胸の前で左手を上げている場合、手が IR エミッターをブロックするため、深度データが得られない胸の部分があります。IR カメラは RGB カメラに近いため、通常、深さから RGB に移行しても同じ問題は発生しません。Kinect が IR を認識できる場合、RGB を認識できます。
あなたの質問に答えるには: RGB インデックスでは深度インデックスを計算するのに十分な情報が得られないため、これを行う方法はわかりません。あなたが言及したように MapDepthFrameToColorFrame とループを使用してみましたか? あなたがマニア (またはコンピューター) のようにクリックしない限り、アプリケーションがこれを問題なく処理できると確信しています。問題が発生していると確信できるまで、これを最適化しようと時間を費やすことはありません。
必要に応じて、関数によって返される色座標のサブセットを確認して、ループのサイズを削減することもできます。RGB ピクセル (x, y) の座標を取得し、(x,y) に近い場所の深度座標を確認します。おそらく (x-20, y-20) から (x+20, y+20) です。それでも見つからない場合は、残りの配列を確認できます。これを少しテストすると、要求されたピクセルの周りを確認するのに適した範囲が見つかる可能性があります。これにより、多くのループが発生することなく、ほとんどの場合ヒットが得られます。