mirror of
https://github.com/PhotonVision/photonvision
synced 2026-07-03 03:01:40 +00:00
Average out the FPS of vision process
Still need to do somethign with it
This commit is contained in:
@@ -14,6 +14,7 @@ import edu.wpi.first.networktables.EntryListenerFlags;
|
|||||||
import edu.wpi.first.networktables.EntryNotification;
|
import edu.wpi.first.networktables.EntryNotification;
|
||||||
import edu.wpi.first.networktables.NetworkTable;
|
import edu.wpi.first.networktables.NetworkTable;
|
||||||
import edu.wpi.first.networktables.NetworkTableEntry;
|
import edu.wpi.first.networktables.NetworkTableEntry;
|
||||||
|
import edu.wpi.first.wpiutil.CircularBuffer;
|
||||||
import org.opencv.core.Mat;
|
import org.opencv.core.Mat;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -325,11 +326,13 @@ public class VisionProcess {
|
|||||||
private class VisionProcessRunnable implements Runnable {
|
private class VisionProcessRunnable implements Runnable {
|
||||||
|
|
||||||
public Double fps = 0.0; // TODO: (HIGH) update or average or something
|
public Double fps = 0.0; // TODO: (HIGH) update or average or something
|
||||||
|
private CircularBuffer fpsAveragingBuffer = new CircularBuffer(7);
|
||||||
private CVPipelineResult result;
|
private CVPipelineResult result;
|
||||||
private Mat streamBuffer = new Mat();
|
private Mat streamBuffer = new Mat();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
var lastUpdateTimeNanos = System.nanoTime();
|
||||||
while(!Thread.interrupted()) {
|
while(!Thread.interrupted()) {
|
||||||
System.out.println("running vision process");
|
System.out.println("running vision process");
|
||||||
|
|
||||||
@@ -354,9 +357,25 @@ public class VisionProcess {
|
|||||||
} else {
|
} else {
|
||||||
// System.err.println("Bad streambuffer mat");
|
// 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
|
// 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 {
|
private class CameraStreamerRunnable extends LoopingRunnable {
|
||||||
|
|||||||
Reference in New Issue
Block a user