Poniżej przedstawie jak można uzyskac informacje o odległości obiektu od sensora.
Odległość danego pixela jest zapisana na 16bitach. Trzy najmniej znaczące wskazują na identyfikator obiektu a pozostałe 13 na jego odległość.
Teraz aby wyłuskać z tego informacje należy użyć dwuch właściwości dostępnych w API.
DepthImageFrame.PlayerIndexBitmask - jeśli na pierwszej z nich wykonamy AND razem z naszą wartością to wyłuskamy numer obiektu.
DepthImageFrame.PlayerIndexBitmaskWidth - przesuwając bity o ta długośc dostaniemy informacje o odległości.
Oto przykład całego kodu:
Odległość danego pixela jest zapisana na 16bitach. Trzy najmniej znaczące wskazują na identyfikator obiektu a pozostałe 13 na jego odległość.
{bity odległości}{numer obiektu}
{1101 0111 1101 1}{001}
Teraz aby wyłuskać z tego informacje należy użyć dwuch właściwości dostępnych w API.
DepthImageFrame.PlayerIndexBitmask - jeśli na pierwszej z nich wykonamy AND razem z naszą wartością to wyłuskamy numer obiektu.
(1101011111011001) AND (0000 0000 0000 0111) = 0000 0000 0000 0001 = 1
DepthImageFrame.PlayerIndexBitmaskWidth - przesuwając bity o ta długośc dostaniemy informacje o odległości.
0001101011111011 = 6907 = 6907mm
Oto przykład całego kodu:
int objectNumber = depthData[depthIndex] & DepthImageFrame.PlayerIndexBitmask;
int objectDepth = depthData[depthIndex] >> DepthImageFrame.PlayerIndexBitmaskWidth;
int objectDepth = depthData[depthIndex] >> DepthImageFrame.PlayerIndexBitmaskWidth;
Brak komentarzy:
Prześlij komentarz