剛開始接觸kinect2.0,預設能夠檢測6個人,而我想單純的檢測最前面的那個人。網上找了很多資料,但c#的資料少之又少,看了很多c++,但有些地方也不是很了解,最後採取最笨的方法。將6個人的關節資料來對比,取最近的那個。基於kinect2.0官方的bodybasics-wpf。**很簡單:
定義乙個距離的中間變數和乙個身體資料,用來表示最近的那個
private void reader_framearrived(object sender, bodyframearrivedeventargs e)
{bool datareceived = false;
body body1; //定義乙個身體資料,用來裝最近的那個身體
double i_face =10.0;//設定人體距離變數
人體資料都被儲存在 bodies 裡面,我們可以從bodies裡面找出,你可以認為bodies[0]存了第乙個人的所有關節資料,bodies[1]存了第二個人,依次類推,最多6個人。所以我
在官方**中新增乙個for迴圈,通過比較6個人的頭部距離,來比較出乙個最近的。當然你也可以用其他的關節資料來比較。
foreach (jointtype jointtype in joints.keys)
{// 有時推斷的關節的深度(z)可能表現為負值
// 鉗位到0.1f以防止座標對映器返回(-infinity,-infinity)
cameraspacepoint position = joints[jointtype].position;
if (body.istracked) //檢測到人
{for (int i = 0; i < 6; i++) //判斷最近距離的人
{if (bodies[i].istracked) //只需要檢測到人的資料
{
if(bodies[i].joints[jointtype.head].position.z得到的 i_face 就是頭最近的距離,bodies[i]就是最近的那個人的資料。
第一次弄這個,不怎麼會優化,希望大家見諒。
TJOJ 1084 最近的距離
在新格爾王國神奇的土地上,有著一群神奇的人們。有一天,三個很無聊的人,菜哭文,牛哭文,牛樂武聚在了一起,他們實在是太無聊了,就開始了乙個遊戲。菜哭文和牛哭文分別從不同的地方,向著某個方向,同時跑起來。讓牛樂武來計算,如果他們一直跑下去,兩個人跑動中最近的距離是多少。牛樂武當然是能算出來了,但是他覺得...
到最近的人的最大距離
在一排座位 seats 中,1 代表有人坐在座位上,0 代表座位上是空的。至少有乙個空座位,且至少有一人坐在座位上。亞歷克斯希望坐在乙個能夠使他與離他最近的人之間的距離達到最大化的座位上。返回他到離他最近的人的最大距離。示例 1 輸入 1,0,0,0,1,0,1 輸出 2 解釋 如果亞歷克斯坐在第二...
到最近的人的最大距離
在一排座位 seats 中,1代表有人坐在座位上,0代表座位上是空的。至少有乙個空座位,且至少有一人坐在座位上。亞歷克斯希望坐在乙個能夠使他與離他最近的人之間的距離達到最大化的座位上。返回他到離他最近的人的最大距離。樣例 1 輸入 1,0,0,0,1,0,1 輸出 2 解釋 如果亞歷克斯坐在第二個空...