2

私は OpenNI の HandsGenerator クラスを使用しており、それを使用してユーザーの動きを追跡したいと考えています。

手の更新された位置を取得するための独自のコールバックを登録しましたが、返された の座標系などに関する情報が見つからないことを除いて、すべて正常に動作しますXnPoint3D。X、Y、Z 範囲、およびおそらくスケーリング情報を正確に指定する仕様がどこかにありますか (そのため、 の 100 の変化は 10 センチメートルなどの動きに対応することがわかりXnPoint3DますX)。

4

1 に答える 1

2

HandsGenerator は、センサーからの実世界の座標をミリメートル単位で返します。これは、深度マップの真ん中にある深度ポイントの X と Y が 0 になることを意味します。

100 (X、Y、または Z) の変化は、実際には 10 センチメートル (100mm = 10cm) の変化です。

X 値と Y 値の範囲は、ハンド ポイントの Z 値によって異なります。デプスマップの左上 (射影座標では 0,0) に手の点があると仮定すると、可能な X 値と Y 値は手の距離によって異なります。手を近づけるほど、X と Y は小さくなります。手の位置の最大範囲を取得するには、任意の最大 Z 値を選択し、その距離での深度マップのコーナーの X と Y の値を見つける必要があります。つまり、射影座標 (0,0,maxZ) と (DepthmapWidth,DepthmapHeight,maxZ) を実際の座標に変換します。maxZ 未満の Z 値を持つすべての手のポイントは、これら 2 つの現実世界の座標の間に収まります)。

DepthGenerator::ConvertProjectiveToRealWorld を使用して、射影座標を実世界に変換できることに注意してください。

于 2012-06-29T20:08:25.997 に答える