Processing 如何在处理中平均更多帧的值

Processing 如何在处理中平均更多帧的值,processing,frame,average,Processing,Frame,Average,我正在编写这段代码来管理和保存来自Microsoft kinect的数据,这些数据存储在int数组int[]depthValues中,我想做的是平均存储和保存更多帧(比如10帧),以便获得更平滑的数据,保留代码的剩余部分 代码如下: 导入java.io.File; 导入SimplePenni。*; 导入java.util.*; simplepenni-kinect; 无效设置() { 尺寸(640480); kinect=新的SimplePenni(本); kinect.enableDepth(

我正在编写这段代码来管理和保存来自Microsoft kinect的数据,这些数据存储在int数组int[]depthValues中,我想做的是平均存储和保存更多帧(比如10帧),以便获得更平滑的数据,保留代码的剩余部分

代码如下:

导入java.io.File;
导入SimplePenni。*;
导入java.util.*;
simplepenni-kinect;
无效设置()
{
尺寸(640480);
kinect=新的SimplePenni(本);
kinect.enableDepth();
}
int prevente=millis();
作废提款()
{
kinect.update();
PImage depthImage=kinect.depthImage();
图像(深度图像,0,0);
int[]depthValues=kinect.depthMap();
StringBuilder sb=新的StringBuilder();
Deque row=新链接列表();
int kinect height=770;//与基准面的kinect距离[mm]
int scaleFactor=1;
int pixelsPerRow=640;
int pixelsToSkip=40;
int rowNum=0;
对于(int i=0;i0&&i==(rowNum+1)*像素箭头){
(某人,世界其他地区);
rowNum++;
某人附加(“\n”);
行=新链接列表();
}
如果(i>=(行数*像素箭头)+像素跳过){
行addFirst((kinectheight-depthValues[i])*scaleFactor);
}
}
(某人,世界其他地区);
字符串kinectDEM=sb.toString();
final String[]txt=新字符串[1];//创建一个包含2个元素的字符串数组
int savingtimestep=15000;//每次保存之间的时间步长(毫秒)
如果(毫秒()>Prevente+savingtimestep){
txt[0]=“ncols 600\nnrows 480\nxlcorner 0\nylcorner 0\ncellsize 91.6667\nNODATA_值10\n”+kinectDEM;
保存字符串(“kinectDEM0.tmp”,txt);
prevente=millis();
//删除旧的.txt文件,从kinectDEM1到kinectDEMtrash
文件f=新文件(sketchPath(“kinectDEM1.txt”);
布尔成功=f.delete();
//将旧的.txt文件从kinectDEM0重命名为kinectDEM1
File oldName1=新文件(sketchPath(“kinectDEM0.txt”);
File newName1=新文件(sketchPath(“kinectDEM1.txt”);
旧名称1.重命名为(新名称1);
//将kinectDEM0.tmp文件重命名为kinectDEM0.txt
File oldName2=新文件(sketchPath(“kinectDEM0.tmp”);
File newName2=新文件(sketchPath(“kinectDEM0.txt”);
旧名称2.重命名为(新名称2);
}
}
无效填充StringBuilder(StringBuilder sb,Deque row){
布尔值emptyRow=false;
而(!emptyRow){
整数val=row.pollFirst();
if(val==null){
emptyRow=真;
}否则{
附加某人(val);
val=row.peekFirst();
如果(val!=null){
某人加上(“”);
}
}
}
}

您有一个名为
depthValues
int[]
数组变量。可以像使用任何其他值一样使用此值。换句话说,您可以创建一个
数组
数组列表
,其中包含多个
int[]
值。

以下是如何使用
ArrayList
保存以前的值:

ArrayList previousDepthValues=new ArrayList();
作废提款(){
//将当前深度贴图添加到ArrayList
添加(kinect.depthMap());
//将ArrayList限制为容纳10个值
if(previousDepthValues.size()==11){
previousDepthValues.remove(0);
}
//创建一个数组来保存平均值
int[]averageDepthValues=新的int[previousDepthValues.get(0.length];
//循环ArrayList中以前的10个深度值
for(int[]depthValue:PreviousDepthValue){
//在每个先前深度值数组中的整数上循环
for(int i=0;i