【发布时间】:2014-02-23 19:48:03
【问题描述】:
我正在为我的研究项目开发 Kinect。我以前曾计算过 kinect 的关节角度和关节坐标。我想计算被跟踪的身体的质心。 任何想法都将不胜感激,并且代码 sn-ps 将非常有帮助。 如果没有社区的帮助,我对堆栈溢出负有很多责任,这是不可能做这样的事情的。 提前致谢 请找到我想要包含此质心功能的代码。该函数跟踪骨架。
骨架 GetFirstSkeleton(AllFramesReadyEventArgs e) { 使用 (SkeletonFrame skeletonFrameData = e.OpenSkeletonFrame()) { 如果(skeletonFrameData == null) { 返回空值; }
skeletonFrameData.CopySkeletonDataTo(allSkeletons);
//get the first tracked skeleton
Skeleton first = (from s in allSkeletons
where s.TrackingState == SkeletonTrackingState.Tracked
select s).FirstOrDefault();
return first;
}
我已经尝试在我的代码中使用此代码,但它不习惯,谁能帮我包括质量中心代码。
oreach(skeletonData 中的skeletonFrame.Skeletons 数据){
SkeletonFrame allskeleton = e.SkeletonFrame;
// Count passive and active person up to six in the group
int numberOfSkeletonsT = (from s in allskeleton.Skeletons
where s.TrackingState == SkeletonTrackingState.Tracked select s).Count();
int numberOfSkeletonsP = (from s in allskeleton.Skeletons
其中 s.TrackingState == SkeletonTrackingState.PositionOnly 选择 s).Count();
// Count passive and active person up to six in the group
int totalSkeletons = numberOfSkeletonsP + numberOfSkeletonsT;
//Console.WriteLine("TotalSkeletons = " + totalSkeletons);
//============================================== =========
如果(data.TrackingState == SkeletonTrackingState.PositionOnly)
{
foreach(data.Joints 中的关节)
{
if (joint.Position.Z != 0)
{
double centerofmassX = com.Position.X;
double centerofmassY = com.Position.Y;
double centerofmassZ = com.Position.Z;
Console.WriteLine( centerofmassX + centerofmassY + centerofmassZ );
}
}
【问题讨论】:
标签: kinect kinect-sdk