我正在使用处理与kinect一起捕获点云数据。我的素描将点的矢量位置从kinect写入数组,并使用PrintWriter类创建文本文件,将每帧中的所有点存储在单独的文本文件中。它包含一个条件,它应该阻止打印作者写作,但它会继续写下来,并最终挂断。任何想法可能是错误的?这里是我的代码:处理 - printwriter /枚举不完成
当记录:
PVector realWorldPoint; //stores each point as a vector
PVector[] frame = new PVector[arrayLength]; //stores all of the vectors/real world points in an array
int index = 0;
for(int y=0;y < context.depthHeight();y+=steps) //height = 480
{
for(int x=0;x < context.depthWidth();x+=steps) //width = 640
{
if (isRecording == true){
int offset = x + y * context.depthWidth();
realWorldPoint = context.depthMapRealWorld()[offset];
frame[index] = realWorldPoint;
recording.add(frame);
index++;
}
}
}
和保存时:
if (isRecording == true){
isRecording = false;
println("Stopped Recording");
Enumeration e = recording.elements();
int i = 0;
while (e.hasMoreElements()) {
// Create one directory
boolean success = (new File("out"+currentFile)).mkdir();
PrintWriter output = createWriter("out"+currentFile+"/frame" + i++ +".txt");
PVector [] frame = (PVector []) e.nextElement();
for (int j = 0; j < frame.length; j++) {
output.println(j + ", " + frame[j].x + ", " + frame[j].y + ", " + frame[j].z);
}
output.flush(); // Write the remaining data
output.close(); //Doesn't seem to close
}
println("done recording"); //NEVER EXECUTES
}
这些都是大文件(约12,000线片),和我创建有关的这些30一秒。也许它只是超载,所以停止从未注册?此外,不确定枚举 - 这是从别人的代码复制,但我没有看到有关此数据类型的文档。
如何使用原始二进制格式进行写入? – mheavers 2012-07-19 14:40:57
假设你正在使用simple-openni,context.depthMap()提供了一个int数组和深度值。我不是一个真正的Processing pro,所以我不能说写入int数组的适当方式是什么,但我认为saveBytes()(http://processing.org/reference/saveBytes_.html)可能是好的开始。对不起,我可以在概念层面帮助你。 – 2012-07-19 18:52:19
总比没有好。谢谢 - 我会追求它。 – mheavers 2012-07-19 19:18:34