Kinect V2開發(5)讀關節資料

2021-08-10 09:33:17 字數 2809 閱讀 4729

要讀取骨骼資料,前面的步驟和之前一樣,要先通過ikinectsensor來取得ibodyframesource,然後開啟ibodyframereader,之後再在主迴圈裡取得ibodyframe裡面的資料,但是在ibodyframe裡面實際上包括了所有人的資料,需要通過getandrefreshbodydata()這個函式寫入ibody這個類裡面再進行個別讀取。可以另外設定乙個變數代表乙個ibody陣列,寫入資料後即可以讀取每個人的骨架資料。

通過ibodyframesourceget_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,...