Average out the FPS of vision process

Still need to do somethign with it
This commit is contained in:
Matt
2019-11-23 08:22:20 -08:00
parent 9b3e611eaa
commit 2e6f7dbae4

View File

@@ -14,6 +14,7 @@ import edu.wpi.first.networktables.EntryListenerFlags;
import edu.wpi.first.networktables.EntryNotification;
import edu.wpi.first.networktables.NetworkTable;
import edu.wpi.first.networktables.NetworkTableEntry;
import edu.wpi.first.wpiutil.CircularBuffer;
import org.opencv.core.Mat;
import java.util.ArrayList;
@@ -325,11 +326,13 @@ public class VisionProcess {
private class VisionProcessRunnable implements Runnable {
public Double fps = 0.0; // TODO: (HIGH) update or average or something
private CircularBuffer fpsAveragingBuffer = new CircularBuffer(7);
private CVPipelineResult result;
private Mat streamBuffer = new Mat();
@Override
public void run() {
var lastUpdateTimeNanos = System.nanoTime();
while(!Thread.interrupted()) {
System.out.println("running vision process");
@@ -354,9 +357,25 @@ public class VisionProcess {
} else {
// System.err.println("Bad streambuffer mat");
}
var deltaTimeNanos = lastUpdateTimeNanos - System.nanoTime();
fpsAveragingBuffer.addFirst(1.0 / (deltaTimeNanos * 1E-09));
lastUpdateTimeNanos = System.nanoTime();
fps = getAverageFPS();
// TODO: (HIGH) do something with the result
}
}
public double getAverageFPS() {
var temp = 0.0;
for(int i = 0; i < 7; i++) {
temp += fpsAveragingBuffer.get(i);
}
temp /= 7.0;
return temp;
}
}
private class CameraStreamerRunnable extends LoopingRunnable {