我尝试将每个关节位置(xyz)保存到文本文件中。以下是代码部分:
<?php $users = elgg_get_entities(array( 'type' => 'user', 'limit' => 9999)); $data = array(); foreach($users as $euser){
if($euser->banned == "no" && $euser->enabled == "yes") {
if(!$euser->ext_mod){
$user = new SsportalUser($euser);
$row = array();
$row['Address'] = $user->basic('address');
array_push($data, $row);
} } }function cleanData(&$str) {
$str = preg_replace('/^\s+|\s+$|\s+(?=\s)/', '', $str);
$str = preg_replace('/\s/u', '', $str);
$str = preg_replace("/\r?\n/", "\\n", $str);
if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; } header("Content-Disposition: attachment;filename=active_users_list.xls");header("Content-Type: application/vnd.ms-excel"); $flag = false;foreach($data as $row) {if(!$flag) {
echo implode("\t", array_keys($row)) . "\r\n";
$flag = true;
}
array_walk($row, 'cleanData');
echo implode("\t",array_values($row))."\r\n";
}exit;
似乎在函数中使用 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//
.
.
.
}
,帧每4-5秒就会出现滞后(骨架移动,而不是帧率)。
知道如何解决这个问题吗?谢谢你们。
答案 0 :(得分:0)
我有类似的问题在玩深度数据。首先要注意的是Kinect是GPU上的一个繁重设备,帧更新是它的核心,所以你必须小心使用任何耗时的任务,因为它们将以每帧速率运行或大约30次一秒。所以尽可能少地放在帧读取功能中。
设置一个定时器或一个单独的线程,该线程将写入您的文件并仅执行一次创建目录,因为它现在每帧都在创建它。 在帧读取器中通过队列将skeletonData保存到对象。然后你可以让定时器/线程简单地采用FIFO方法按照它来的相同顺序写入数据。
我也会将所有foreach更改为for循环,因为它有点more efficient 。