首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kinect:在AllFramesReadyEventArgs中具有循环功能的滞后帧显示

Kinect:在AllFramesReadyEventArgs中具有循环功能的滞后帧显示
EN

Stack Overflow用户
提问于 2016-04-15 14:56:58
回答 1查看 80关注 0票数 2

我尝试将每个关节位置(xyz)保存到一个文本文件中。下面是代码的一部分:

代码语言:javascript
复制
      private void KinectAllFramesReady(object sender, AllFramesReadyEventArgs) 
    {
    .
    .
    .
    //Some initialization code//
    .
    .
    .
      using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
                    {
                        if (skeletonFrame != null)
                        {
                            if ((this.skeletonData == null) || (this.skeletonData.Length != skeletonFrame.SkeletonArrayLength))
                            {
                                this.skeletonData = new Skeleton[skeletonFrame.SkeletonArrayLength];
                            }

                            skeletonFrame.CopySkeletonDataTo(this.skeletonData);

                            haveSkeletonData = true;

                            //===============
                            foreach (var skeleton in skeletonData)
                            {
                                if (skeletonFrame != null)
                                {
                                    if (skeleton.TrackingState == SkeletonTrackingState.Tracked)
                                    {

                                        // check the record check box

                                        //if (obj.RecCheckStat == true)

                                        if (RecordCheckBox.IsChecked == true)
                                        {
                                            //save skeleton to string
                                           Directory.CreateDirectory(folder_path);
                                            File.WriteAllText(file_path, currentSkeleton);

                                        }


                                    }
                                }
                            }
                            //===============
                        }
                    }


    }
.
.
.
//Draw skeleton-depth-color//
.
.
.
}

似乎在foreach (var skeleton in skeletonData)函数中,帧将每4-5秒滞后一次(骨架移动,而不是帧速率)。

你知道怎么解决这个问题吗?谢谢你们。

EN

回答 1

Stack Overflow用户

发布于 2016-04-26 22:56:00

我在处理深度数据时也遇到过类似的问题。首先要注意的是,Kinect在GPU上是一个费力的设备,帧更新是它的核心,所以你必须小心使用任何耗时的任务,因为它们将以每帧速率或每秒30次的速度运行。所以尽量少放在帧读取函数中。

设置一个计时器或一个单独的线程,它将写入您的文件,并只创建目录一次,因为现在它正在创建它的每一帧。在帧阅读器中,通过队列将skeletonData保存到对象。然后,您可以让计时器/线程简单地采用FIFO方法,以相同的顺序写入数据。

我还会将任何foreach改为for循环,因为它是一个小more efficient

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36640210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档