2015-02-06 25 views
0

我打算創建一個應用程序,並像這樣:http://www.zonetrigger.com/articles/Kinect-software/的Kinect作爲運動傳感器

這意味着,我希望能夠建立「觸發區」使用Kinect和它的3D圖像。現在我知道微軟正在聲明Kinect可以檢測多達6人的骨架。 但是,對我來說,檢測是否有某物正在進入觸發區以及其中的位置就足夠了。

有誰知道Kinect是否可以編程作爲一個簡單的運動傳感器,所以它可以檢測超過6項?

回答

2

衆所周知,Kinect無法檢測到超過5個條目(只是開個玩笑)。所有你需要做的是讓一個深度圖(Z-MAP)從Kinect的,然後用這些公式將其轉換成3D地圖,

X = (((cols - cap_width) * Z)/focal_length_X); 
Y = (((row - cap_height)* Z)/focal_length_Y); 
Z = Z; 

凡ROW和COL從圖像中心計算(不左上角!),焦點是像素(〜570)的Kinect焦距。現在,您可以在3D中指定確切的位置,如果像素出現,您可以執行任何想要的操作。這裏有更多的指針:

  1. 你可以使用openCV來簡化可視化。從Kinect初始化後讀取一幀,你只需要這樣的東西:

    Mat inputMat = Mat(h,w,CV_16U,(void *)depth_gen.GetData());

  2. 您可以輕鬆地可視化使用histogram equalization深度貼圖(它將最佳的傳播你可用255級灰度之間10000個Kinect的水平)

  3. 有時需要做對象分割與相似的深度分組空間接近像素在一起。我在幾年前做了這個,見this,但必須刪除物體停留在其上的地板和/或公共表面,否則所有物體都被連接並作爲單個大段提取。