Я использую обработку совместно с kinect для сбора данных облачных точек. Мой эскиз записывает векторные местоположения точек из kinect в массив и использует класс PrintWriter для создания текстовых файлов, которые хранят все точки из каждого кадра в отдельных текстовых файлах. Он включает в себя условие, которое должно прекратить писать писателю, но оно продолжает писать и, в конце концов, зависает. Любые идеи относительно того, что может быть неправильным? Вот мой код:Обработка - printwriter/enumeration не завершается
При записи:
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
Предполагая, что вы используете simple-openni, context.depthMap() предоставляет массив int с значениями глубины. Я не являюсь профессионалом обработки, поэтому не могу сказать, какой способ записи массива int является, но я думаю, что saveBytes() (http://processing.org/reference/saveBytes_.html) может быть хорошее начало. Извините, что я могу просто помочь вам на концептуальном уровне. –
Лучше, чем ничего. Спасибо, я продолжу это. – mheavers