Measure processing time.
It's averaging ~60 fps on my laptop, just counting the time to process frames and draw target markers into the frames, not counting display time.
git-svn-id: https://robotics.mvla.net/svn/frc971/2013/trunk/src@4130 f308d9b7-e957-4cde-b6ac-9a88185e7312
diff --git a/971CV/src/org/frc971/VisionTuner.java b/971CV/src/org/frc971/VisionTuner.java
index 757b46c..98ccb41 100644
--- a/971CV/src/org/frc971/VisionTuner.java
+++ b/971CV/src/org/frc971/VisionTuner.java
@@ -50,6 +50,11 @@
private final JSlider satMinSlider = new JSlider();
private final JSlider valMinSlider = new JSlider();
+ private static int totalFrames;
+ private static double totalMsec;
+// private static double minMsec = Double.MAX_VALUE;
+// private static double maxMsec;
+
public VisionTuner(String[] imageFilenames) {
cameraFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
@@ -131,8 +136,20 @@
WPIColorImage cameraImage = testImages[currentIndex];
cameraFrame.setTitle(testImageFilenames[currentIndex]);
+ long startTime = System.nanoTime();
WPIImage processedImage = recognizer.processImage(cameraImage);
+ long endTime = System.nanoTime();
+
cameraFrame.showImage(processedImage.getBufferedImage());
+
+ double milliseconds = (endTime - startTime) / 1e6;
+ ++totalFrames;
+ totalMsec += milliseconds;
+// minMsec = Math.min(minMsec, milliseconds);
+// maxMsec = Math.max(maxMsec, milliseconds);
+ System.out.format("Processing took %.2f ms, %.2f fps, %.2f avg%n",
+ milliseconds, 1000 / milliseconds,
+ 1000 * totalFrames / totalMsec);
}
private void previousImage() {