用kinect的骨骼数据测量身高的问题
kinect吧
全部回复
仅看楼主
level 1
也就是《kinect应用开发实战》166页中,
void _kinect_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
{
。。。
if (s.ClippedEdges == FrameEdges.None)
return;
。。。
}
这里不太清楚的时,这表示用户都是在镜头内的,反而返回,不应该是只有当用户全部处于镜头中才能够测身高吗
2014年09月03日 01点09分 1
level 5
这个只是骨骼事件初始化吧,下面那个是检测不到人体返回空值…个人理解 ,书不在手边。
2014年09月04日 00点09分 3
level 1
其实程序中用两种方法测身高,分别根据深度图像流和骨骼数据,这里是根据骨骼数据来测的部分
using (SkeletonFrame SFrame = e.OpenSkeletonFrame())
{
if (SFrame == null)
return;
Skeleton s = GetClosetSkeleton(SFrame);
if (s == null)
return;
if (s.ClippedEdges == FrameEdges.None)
return;
//不同于深度数据得到的图像基本单位是像素,short表示,骨骼数据得到的首先是骨骼,然后是进一步细分的骨骼点
SkeletonPoint head = s.Joints[JointType.Head].Position;
SkeletonPoint centerShould = s.Joints[JointType.ShoulderCenter].Position;
SkeletonPoint leftFoot = s.Joints[JointType.FootLeft].Position;
float height = Math.Abs(head.Y - leftFoot.Y);
float heightEx = Math.Abs(head.Y - leftFoot.Y) + 0.1f;
float realHeight = height + heightEx;
labelSkeletonHeight.Content = realHeight.ToString();
}
这条语句起的作用,根据属性ClippedEdges的理解,此处就是说用户没有丝毫超出镜头,这就有点矛盾了,正因为每超出镜头,才可以得到头和脚的位置啊,反而这里确实返回了
2014年09月04日 06点09分 4
1