package com.dronecontrol.intelcontrol.entry;
import com.dronecontrol.perceptual.components.filters.BilateralFilter;
import com.dronecontrol.perceptual.data.body.Coordinate;
import com.dronecontrol.perceptual.data.body.Hands;
import com.dronecontrol.perceptual.data.events.DetectionData;
import com.dronecontrol.perceptual.data.events.HandsDetectionData;
import com.dronecontrol.perceptual.listeners.DetectionListener;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Date;
public class DeviationPlotter implements DetectionListener<Hands> {
private int i = 0;
private int x = 0;
private long startTime;
private final PrintWriter writer;
public DeviationPlotter() {
startTime = new Date().getTime();
try {
String fileName = String.format("sigma_t-%d-sigma_u-%d", BilateralFilter.SIGMA_T, (int) (BilateralFilter.SIGMA_U * 100.0));
if (Files.exists(Paths.get("C:/Users/Thomas Endres/Dropbox/Perceptual/" + fileName))) {
Files.delete(Paths.get("C:/Users/Thomas Endres/Dropbox/Perceptual/" + fileName));
}
writer = new PrintWriter(new BufferedWriter(new FileWriter("C:/Users/Thomas Endres/Dropbox/Perceptual/" + fileName, true)));
} catch (IOException e) {
throw new IllegalStateException(e);
}
}
public void dispose() {
writer.close();
}
@Override
public void onDetection(DetectionData<Hands> data) {
x++;
if (x % 10 == 0) {
double timePassed = new Date().getTime() - startTime;
double fps = ((double) x) / (timePassed / 1000.0);
System.out.println(String.format("%.1f", fps));
}
HandsDetectionData handsDetectionData = (HandsDetectionData) data;
if (!handsDetectionData.getLeftHand().isActive()) {
return;
}
i++;
Coordinate coord = handsDetectionData.getLeftHand().getCoordinate();
Coordinate uCoord = handsDetectionData.getLeftHand().getUnsmoothedCoordinate();
String text = String.format("%d\t%.7f\t%.7f\t%.7f\t%.7f\t%.7f\t%.7f", i, coord.getX(), coord.getY(), coord.getZ(), uCoord.getX(), uCoord.getY(), uCoord.getZ());
writer.println(text);
}
}