我需要找到任何使用Kinect的人在面对镜头时的胸部前部尺寸.我目前的解决方案是:
当MultiFrameSource到达时获取颜色(以显示ui中的主体)主体(获取关节)和bodyIndex帧.
使用以下方法将BodyIndexFrame复制到byte [] _bodyData:
bodyIndexFrame.CopyFrameDataToArray(_bodyData);
Run Code Online (Sandbox Code Playgroud)我得到了Joint对象:spineShoulder和spineMid.我认为胸部总是在这些点之间.
我通过使用将两个关节转换为CameraSpacePoint(x,y,z)并从CameraSpacePoint转换为DepthSpacePoint(x,y)
_sensor.CoordinateMapper.MapCameraPointToDepthSpace(jointPosition);
Run Code Online (Sandbox Code Playgroud)我仍然保留对spineShoulder的z值的引用.
第二个假设=> 从spineShoulderY开始到spineMidY我试图找到播放器区域中最宽的点.为了做到这一点,我将尝试找到spineShoulderX和找到的第一个不属于玩家的左边区域之间的最长段,以及发现不属于玩家的spineShoulderX和第一个右侧区域之间的最长段.找到的两个x段必须位于相同的y坐标中.
/***************
* Returns the distance between 2 points
*/
private static int getDistanceToMid(int pointX, int midX)
{
if (midX > pointX)
{
return (midX - pointX);
}
else if (pointX > midX)
{
return (pointX - midX);
}
else
{
return 0;
}
}
/*********
* Loops through the bodyData array
* It will look for the longest x distance from midX to the last left …Run Code Online (Sandbox Code Playgroud)