Depth画像と同じく 512x424 の解像度でBodyIndex画像を取得することができます。 同時に6人まで区別することができます。
NtKinect では得られたBodyIndex画像はピクセル毎に uchar または cv::Vector3b で表現されます。
返り値の型 | メソッド名 | 説明 |
---|---|---|
void | setBodyIndex(bool raw = true) | メンバ変数 bodyIndexImage に BodyIndex 画像をセットする。 引数raw がtrue または 引数がない場合、各画素に bodyIndex の値が uchar 型でセットされる。 引数 raw がfalseの場合、bodyIndexを色に変換したデータ cv::Vec3b 型でセットされる。 |
型 | 変数名 | 説明 | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
cv::Mat | bodyIndexImage | BodyIndex画像。 6人まで同時検出が可能で、BodyIndex自体は検出された人ごとに割り当てられた 0〜5の番号である。 BodyIndex画像の各画素の型は uchar の場合と cv::Vec3b の場合がある。 画像の座標は DepthSpace 座標系における位置である。
画素がuchar型のとき各画素の値は、人が検出された場合は 0〜5、検出されない場合は255になる。
uchar pixel = bodyIndexImage.at<uchar>(y , x ) 画素がcv::Vec3b 型のときbodyIndex画像は bodyIndex 番号に相当するRGBの値 cv::Vec3b で示される。
cv::Mat pixel = bodyIndexImage.at<cv::Vec3b>(y , x )
|
kinect.setBodyIndex()メソッドを呼び出して kinect.bodyIndexImage に各画素毎の bodyIndexデータを設定します。
main.cpp |
|
setBodyIndex() メソッドの呼び出しで引数にfalseを指定しているので、 得られるbodyIndex画像は各画素が cv::Vec3b 型の画像です。 この実行例では認識されている人がシアン(水色)で表現されているので、 その人の bodyIndex は3であることがわかります。
上記のzipファイルには必ずしも最新の NtKinect.h が含まれていない場合があるので、 こちらから最新版をダウンロードして 差し替えてお使い下さい。