Kinect獲取深度資料利用色彩展示

2022-08-28 00:30:13 字數 1583 閱讀 3615

根據微軟資料顯示,kinect v2的深度幀資料為0.5m-8m,每一幀的大小為512*424(pixel),每一畫素點的深度值存放在乙個16位bit的ushort中。

這裡的深度是指畫素點到kinect sensor平面的距離,網上有資料說資料的前13位表示距離,後3位表示使用者id,也有說12+4的,但根據我獲得的原始

資料顯示,並沒有使用者id位,全都是表示距離的。

下面介紹一下在unity5.6中獲取深度資料並當紋理顯示在一遊戲物件上的過程,離sensor越近則顏色越紅,越遠則越綠。

首先定義變數

private kinectsensor _sensor;  //kincet感測器

private depthframereader _depthreader; //深度幀讀取器

private ushort _depthdata; //因為深度資料為2位元組16bit,所以定為ushort存放資料

private texture2d _texture;

private color pixelcolor; //根據每個畫素點的深度,賦予顏色

private int nearthreshold; //最近的有效探測距離

private int farthreshold; //最遠的有效探測距離

在start方法中初始化各變數

_sensor =kinectsensor.getdefault ();

if (_sensor != null

)

if (!_sensor.isopen)

_sensor.open ();

定義depth2colortexture(),並根據各畫素點的深度值,賦值不同的顏色,更新紋理

void

depth2colortexture()

else

if (data > farthreshold)

else

}_texture.setpixels (pixelcolor);

getcomponent

().material.maintexture =_texture;

}

在update中獲取深度幀資料,並呼叫depth2colortexture方法顯示。

if (_depthreader == null

)

return

;

var frame =_depthreader.acquirelatestframe ();

if (frame != null

)

最後,當整個程式退出時,銷毀sensor和reader

void

if (_sensor != null

) _sensor = null

; }

}

效果如圖所示

Kinect 深度資料

kinect兩側的感測器負責獲取深度資料 深度資料是指kinect視野範圍內的物體到kinect的三維空間距離。深度資料流提供了一種結構 該結構中每個畫素的高13位表示在深度感測器的視野範圍內離特定座標物體最近的距離。在kinect sdk中,通過處理深度資料來識別感測器組前的兩個人體影象。從程式中...

Kinect深度資料文字分析

深度值計算公式 depth pixeldata i depthimageframe.playerindexbitmaskwidth 解析 pixeldata存放的是short型資料,原始資料為二進位制,2個位元組,16位。在vs中以十進位制方式顯示 depthimageframe.playerind...

Kinect顯示彩色資料流和深度資料流

1.勾選computer color map 2.新建乙個rawimage,彩色資料流將顯示在這個rawimage上 3.編寫指令碼usekinectmanager public rawimage rawimage void update 4.執行後,是顛倒過來的,需要將scale中的y變成 1 1...