要讀取骨骼資料,前面的步驟和之前一樣,要先通過ikinectsensor
來取得ibodyframesource
,然後開啟ibodyframereader
,之後再在主迴圈裡取得ibodyframe
裡面的資料,但是在ibodyframe
裡面實際上包括了所有人的資料,需要通過getandrefreshbodydata()
這個函式寫入ibody
這個類裡面再進行個別讀取。可以另外設定乙個變數代表乙個ibody陣列,寫入資料後即可以讀取每個人的骨架資料。
通過ibodyframesource
的get_bodycount()
可以取得ibodycount
代表可以讀取到追蹤的人數,目前來說最多就是6個人。
通過ibody
中的get_istracked()
這個函式可以判斷某個人是否正在被追蹤
通過ibody
中的getjoints()
這個函式可以得到所有關節點的位置資訊。
位置資訊被定義成joint
這個類別,裡面包含三個引數,第乙個是jointtype
,代表是哪個關節點,我們可以在jointtype enumeration中看到具體的列舉;第二個是position
,是用cameraspacepoint
來記錄這個關節點在攝像頭空間座標系裡的位置(如果要用來在2d影象中顯示,需要做座標轉換);第三個是trackingstate
,用來記錄這個關節的追蹤狀態。
通過ibody
中的getjointorientations()
這個函式可以得到關節點的方向
ibody
中還有兩個函式get_handrightstate()
和get_handleftstate()
可以用來獲取兩手的狀態資料。
我做了乙個上半身骨骼資訊讀取,效果圖如下:
使用者編號是看起來是隨機的,我自己測試的時候每一次編號都不太一樣,但是在0-5範圍,位置變化的時候不一定能讀取到幾個關節,離kinect比較近的話只能讀到乙個關節。然後這個位置和方向的資料是讀出來了,但是是否正確還不知道怎麼驗證。
**如下:
#include
#include
#include
#include
using
namespace
std;
using
namespace cv;
const
string get_name(int n); //此函式判斷出關節點的名字
int main(void)
// 獲取關節方向
jointorientation aorientations[jointtype::jointtype_count];
if (pbody->getjointorientations(jointtype::jointtype_count, aorientations) != s_ok)
// 輸出資訊
for (int j = 0; j < jointtype_count; j++)
}//判斷這一時刻有幾個人在被追蹤
if (itrackedbodycount > 0)
cout
<< "total "
<< itrackedbodycount << " bodies in this time\n"
<< endl;
else
}// 4d. release frame
pdepthframe->release();
pbodyframe->release();
if (waitkey(30) == vk_escape)
break;
//為避免資料刷太快,每秒鐘更新一次
sleep(1000);
}delete abody;
// 4e. release frame
pdepthreader->release();
pbodyreader->release();
// 1c.關閉感應器
psensor->close();
// 1d.釋放感應器
psensor->release();
psensor = nullptr;
return0;}
const
string get_name(int n)
}
kinect v2 面部模型
原文 請戳這裡 使用sdk kinect for windows sdk v2.0 public preview1409 同前面,因為sdk未完成,不附上函式 方法 介面的超連結。是的,微軟在9月16日更新了sdk。沒看具體更新內容,但是感覺上解決了一些bug,比如x86的fusion。這次說說高畫...
分水嶺演算法 Kinect V2開發學習 3
include include include include include using namespace std using namespace cv include watershedsegmentation.h void delay int a int main int argc,char...
Kinect v2 資料來源與獲取
在kinect for windows sdk2.0中,kinect有多種型別的資料來源。source,reader和frame。要讀取骨架,就有ibodyframesource,ibodyframereader,ibodyframe這三個類,要讀取深度資料,就有idepthframesource,...