用kinect统计人数,基于微软的skeleton tracking

   private void SensorSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
               {
                Skeleton[] skeletons = new Skeleton[0];


                using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
               {
                     if (skeletonFrame == null)
                     {
                         textBox1.Text = "0";
                         //return 0;
                     }
                     if (skeletonFrame != null)
                     {
                         skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength];
                         skeletonFrame.CopySkeletonDataTo(skeletons);
                        


                         //Kinect only get the position
                         int noTrac = (from s in skeletons
                                       where s.TrackingState == SkeletonTrackingState.PositionOnly
                                       select s).Count();


                         //kinect tracked
                         int getTrac = (from s in skeletons
                                        where s.TrackingState == SkeletonTrackingState.Tracked
                                        select s).Count();


                         int numberOfSkeletons = noTrac + getTrac;
                         this.textBox1.Text = numberOfSkeletons.ToString();//output the number in textbox
                     }
                
               }


              using (DrawingContext dc = this.drawingGroup.Open())
                {
                // Draw a transparent background to set the render size
                   dc.DrawRectangle(Brushes.Black, null, new Rect(0.0, 0.0, RenderWidth, RenderHeight));


                    if (skeletons.Length != 0)
                   {
                       foreach (Skeleton skel in skeletons)
                        {
                            RenderClippedEdges(skel, dc);


                          if (skel.TrackingState == SkeletonTrackingState.Tracked)
                          {
                                  this.DrawBonesAndJoints(skel, dc);
                          }
                          else if (skel.TrackingState == SkeletonTrackingState.PositionOnly)
                          {
                              dc.DrawEllipse(
                              this.centerPointBrush,
                              null,
                              this.SkeletonPointToScreen(skel.Position),
                              BodyCenterThickness,
                              BodyCenterThickness);
                          }
                      }
                  }


                // prevent drawing outside of our render area
                  this.drawingGroup.ClipGeometry = new RectangleGeometry(new Rect(0.0, 0.0, RenderWidth, RenderHeight));
            }
          }

在做一个关于kinect的项目,要检测在kinect前的人数。。。我想用kinect骨骼追踪然后把追踪的数目加起来。 问题是,kinect追踪到一个骨骼后是持续追踪这个骨骼的动作,而且最多追踪2个。怎么能在在打开kinect的时候就能得出有多少人?有新的人进来后count会直接增加?小弟是新手。求各位帮帮忙。。。用的是C#
我在kinect skeleton 后面加了个代码
private int GetTotalSkeleton(AllFramesReadyEventArgs e)
       {
 
           using (SkeletonFrame skeletonFrameData = e.OpenSkeletonFrame())
           {
               if (skeletonFrameData == null)
               {
                    return 0;
               }
 
 
               skeletonFrameData.CopySkeletonDataTo( allSkeletons);
 
               //Pessoas nao rastreados
               int noTrac = (from s in allSkeletons
                                        where s.TrackingState == SkeletonTrackingState.PositionOnly
                                        select s).Count();
 
               //Pessoas com esqueleto
               int comEsq = (from s in allSkeletons
                             where s.TrackingState == SkeletonTrackingState.Tracked
                             select s).Count();
 
               int numberOfSkeletons = noTrac + comEsq;
 
               return numberOfSkeletons;
 
           }
 
       }
红字说有错误,return那个把void改成int解决了。。。allSkeletons改成totalskeleton可以吗?这个代码可以实现统计人数吗?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值