diff --git a/photon-core/src/main/java/org/photonvision/common/util/TestUtils.java b/photon-core/src/main/java/org/photonvision/common/util/TestUtils.java index ca1298905..bf189ff29 100644 --- a/photon-core/src/main/java/org/photonvision/common/util/TestUtils.java +++ b/photon-core/src/main/java/org/photonvision/common/util/TestUtils.java @@ -24,10 +24,13 @@ import java.awt.HeadlessException; import java.io.File; import java.io.IOException; import java.nio.file.Path; +import java.util.stream.Collectors; import org.opencv.core.Mat; import org.opencv.highgui.HighGui; import org.photonvision.jni.WpilibLoader; import org.photonvision.vision.calibration.CameraCalibrationCoefficients; +import org.photonvision.vision.pipeline.result.CVPipelineResult; +import org.photonvision.vision.target.TrackedTarget; public class TestUtils { public static boolean loadLibraries() { @@ -372,6 +375,22 @@ public class TestUtils { showImage(frame, DefaultTimeoutMillis); } + public static void printTestResults(CVPipelineResult pipelineResult) { + double fps = 1000 / pipelineResult.getLatencyMillis(); + System.out.print( + "Pipeline ran in " + pipelineResult.getLatencyMillis() + "ms (" + fps + " fps), "); + System.out.println("Found " + pipelineResult.targets.size() + " valid targets"); + } + + public static void printTestResultsWithLocation(CVPipelineResult pipelineResult) { + printTestResults(pipelineResult); + System.out.println( + "Found targets at " + + pipelineResult.targets.stream() + .map(TrackedTarget::getBestCameraToTarget3d) + .collect(Collectors.toList())); + } + public static Path getTestMode2023ImagePath() { return getResourcesFolderPath(true) .resolve("testimages") diff --git a/photon-core/src/test/java/org/photonvision/vision/pipeline/AprilTagTest.java b/photon-core/src/test/java/org/photonvision/vision/pipeline/AprilTagTest.java index 24bffd6d5..94f1db534 100644 --- a/photon-core/src/test/java/org/photonvision/vision/pipeline/AprilTagTest.java +++ b/photon-core/src/test/java/org/photonvision/vision/pipeline/AprilTagTest.java @@ -18,7 +18,6 @@ package org.photonvision.vision.pipeline; import edu.wpi.first.math.geometry.Translation3d; -import java.util.stream.Collectors; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -29,7 +28,6 @@ import org.photonvision.vision.camera.QuirkyCamera; import org.photonvision.vision.frame.provider.FileFrameProvider; import org.photonvision.vision.pipeline.result.CVPipelineResult; import org.photonvision.vision.target.TargetModel; -import org.photonvision.vision.target.TrackedTarget; public class AprilTagTest { @BeforeEach @@ -59,7 +57,7 @@ public class AprilTagTest { CVPipelineResult pipelineResult; pipelineResult = pipeline.run(frameProvider.get(), QuirkyCamera.DefaultCamera); - printTestResults(pipelineResult); + TestUtils.printTestResultsWithLocation(pipelineResult); // Draw on input var outputPipe = new OutputStreamPipeline(); @@ -124,7 +122,7 @@ public class AprilTagTest { CVPipelineResult pipelineResult; pipelineResult = pipeline.run(frameProvider.get(), QuirkyCamera.DefaultCamera); - printTestResults(pipelineResult); + TestUtils.printTestResultsWithLocation(pipelineResult); // Draw on input var outputPipe = new OutputStreamPipeline(); @@ -140,16 +138,4 @@ public class AprilTagTest { Assertions.assertEquals(2, pose.getTranslation().getY(), 0.2); Assertions.assertEquals(0.0, pose.getTranslation().getZ(), 0.2); } - - private static void printTestResults(CVPipelineResult pipelineResult) { - double fps = 1000 / pipelineResult.getLatencyMillis(); - System.out.println( - "Pipeline ran in " + pipelineResult.getLatencyMillis() + "ms (" + fps + " " + "fps)"); - System.out.println("Found " + pipelineResult.targets.size() + " valid targets"); - System.out.println( - "Found targets at " - + pipelineResult.targets.stream() - .map(TrackedTarget::getBestCameraToTarget3d) - .collect(Collectors.toList())); - } } diff --git a/photon-core/src/test/java/org/photonvision/vision/pipeline/ArucoPipelineTest.java b/photon-core/src/test/java/org/photonvision/vision/pipeline/ArucoPipelineTest.java index 8a7a4af46..1c4ee4cef 100644 --- a/photon-core/src/test/java/org/photonvision/vision/pipeline/ArucoPipelineTest.java +++ b/photon-core/src/test/java/org/photonvision/vision/pipeline/ArucoPipelineTest.java @@ -18,7 +18,6 @@ package org.photonvision.vision.pipeline; import edu.wpi.first.math.geometry.Translation3d; -import java.util.stream.Collectors; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -29,7 +28,6 @@ import org.photonvision.vision.camera.QuirkyCamera; import org.photonvision.vision.frame.provider.FileFrameProvider; import org.photonvision.vision.pipeline.result.CVPipelineResult; import org.photonvision.vision.target.TargetModel; -import org.photonvision.vision.target.TrackedTarget; public class ArucoPipelineTest { @BeforeEach @@ -59,7 +57,7 @@ public class ArucoPipelineTest { CVPipelineResult pipelineResult; pipelineResult = pipeline.run(frameProvider.get(), QuirkyCamera.DefaultCamera); - printTestResults(pipelineResult); + TestUtils.printTestResultsWithLocation(pipelineResult); // Draw on input var outputPipe = new OutputStreamPipeline(); @@ -102,16 +100,4 @@ public class ArucoPipelineTest { // The object's Z axis should be (0, 0, 1) Assertions.assertEquals(1, new Translation3d(0, 0, 1).rotateBy(pose.getRotation()).getZ(), 0.1); } - - private static void printTestResults(CVPipelineResult pipelineResult) { - double fps = 1000 / pipelineResult.getLatencyMillis(); - System.out.println( - "Pipeline ran in " + pipelineResult.getLatencyMillis() + "ms (" + fps + " " + "fps)"); - System.out.println("Found " + pipelineResult.targets.size() + " valid targets"); - System.out.println( - "Found targets at " - + pipelineResult.targets.stream() - .map(TrackedTarget::getBestCameraToTarget3d) - .collect(Collectors.toList())); - } } diff --git a/photon-core/src/test/java/org/photonvision/vision/pipeline/CirclePNPTest.java b/photon-core/src/test/java/org/photonvision/vision/pipeline/CirclePNPTest.java index 9a4d392ad..35f02fc90 100644 --- a/photon-core/src/test/java/org/photonvision/vision/pipeline/CirclePNPTest.java +++ b/photon-core/src/test/java/org/photonvision/vision/pipeline/CirclePNPTest.java @@ -20,7 +20,6 @@ package org.photonvision.vision.pipeline; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -import java.util.stream.Collectors; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.photonvision.common.util.TestUtils; @@ -34,7 +33,6 @@ import org.photonvision.vision.opencv.ContourIntersectionDirection; import org.photonvision.vision.opencv.ContourShape; import org.photonvision.vision.pipeline.result.CVPipelineResult; import org.photonvision.vision.target.TargetModel; -import org.photonvision.vision.target.TrackedTarget; public class CirclePNPTest { private static final String LIFECAM_240P_CAL_FILE = "lifecam240p.json"; @@ -111,7 +109,7 @@ public class CirclePNPTest { frameProvider.requestFrameThresholdType(pipeline.getThresholdType()); CVPipelineResult pipelineResult = pipeline.run(frameProvider.get(), QuirkyCamera.DefaultCamera); - printTestResults(pipelineResult); + TestUtils.printTestResultsWithLocation(pipelineResult); TestUtils.showImage( pipelineResult.inputAndOutputFrame.colorImage.getMat(), "Pipeline output", 999999); @@ -123,7 +121,7 @@ public class CirclePNPTest { while (true) { CVPipelineResult pipelineResult = pipeline.run(frame, QuirkyCamera.DefaultCamera); - printTestResults(pipelineResult); + TestUtils.printTestResultsWithLocation(pipelineResult); int preRelease = CVMat.getMatCount(); pipelineResult.release(); int postRelease = CVMat.getMatCount(); @@ -151,16 +149,4 @@ public class CirclePNPTest { continuouslyRunPipeline(frameProvider.get(), settings); } - - private static void printTestResults(CVPipelineResult pipelineResult) { - double fps = 1000 / pipelineResult.getLatencyMillis(); - System.out.println( - "Pipeline ran in " + pipelineResult.getLatencyMillis() + "ms (" + fps + " " + "fps)"); - System.out.println("Found " + pipelineResult.targets.size() + " valid targets"); - System.out.println( - "Found targets at " - + pipelineResult.targets.stream() - .map(TrackedTarget::getBestCameraToTarget3d) - .collect(Collectors.toList())); - } } diff --git a/photon-core/src/test/java/org/photonvision/vision/pipeline/ColoredShapePipelineTest.java b/photon-core/src/test/java/org/photonvision/vision/pipeline/ColoredShapePipelineTest.java index b89618562..0e33c0fa3 100644 --- a/photon-core/src/test/java/org/photonvision/vision/pipeline/ColoredShapePipelineTest.java +++ b/photon-core/src/test/java/org/photonvision/vision/pipeline/ColoredShapePipelineTest.java @@ -35,7 +35,7 @@ public class ColoredShapePipelineTest { TestUtils.showImage( colouredShapePipelineResult.inputAndOutputFrame.processedImage.getMat(), "Pipeline output: Triangle."); - printTestResults(colouredShapePipelineResult); + TestUtils.printTestResults(colouredShapePipelineResult); } public static void testQuadrilateralDetection( @@ -46,7 +46,7 @@ public class ColoredShapePipelineTest { TestUtils.showImage( colouredShapePipelineResult.inputAndOutputFrame.processedImage.getMat(), "Pipeline output: Quadrilateral."); - printTestResults(colouredShapePipelineResult); + TestUtils.printTestResults(colouredShapePipelineResult); } public static void testCustomShapeDetection( @@ -57,7 +57,7 @@ public class ColoredShapePipelineTest { TestUtils.showImage( colouredShapePipelineResult.inputAndOutputFrame.processedImage.getMat(), "Pipeline output: Custom."); - printTestResults(colouredShapePipelineResult); + TestUtils.printTestResults(colouredShapePipelineResult); } @Test @@ -69,7 +69,7 @@ public class ColoredShapePipelineTest { TestUtils.showImage( colouredShapePipelineResult.inputAndOutputFrame.processedImage.getMat(), "Pipeline output: Circle."); - printTestResults(colouredShapePipelineResult); + TestUtils.printTestResults(colouredShapePipelineResult); } @Test @@ -115,11 +115,4 @@ public class ColoredShapePipelineTest { // testCircleShapeDetection(pipeline, settings, frameProvider.get()); // testPowercellDetection(settings, pipeline); } - - private static void printTestResults(CVPipelineResult pipelineResult) { - double fps = 1000 / pipelineResult.getLatencyMillis(); - System.out.print( - "Pipeline ran in " + pipelineResult.getLatencyMillis() + "ms (" + fps + " fps), "); - System.out.println("Found " + pipelineResult.targets.size() + " valid targets"); - } } diff --git a/photon-core/src/test/java/org/photonvision/vision/pipeline/ReflectivePipelineTest.java b/photon-core/src/test/java/org/photonvision/vision/pipeline/ReflectivePipelineTest.java index 0817cf37d..04ab24434 100644 --- a/photon-core/src/test/java/org/photonvision/vision/pipeline/ReflectivePipelineTest.java +++ b/photon-core/src/test/java/org/photonvision/vision/pipeline/ReflectivePipelineTest.java @@ -60,7 +60,7 @@ public class ReflectivePipelineTest { CVPipelineResult pipelineResult; pipelineResult = pipeline.run(frameProvider.get(), QuirkyCamera.DefaultCamera); - printTestResults(pipelineResult); + TestUtils.printTestResults(pipelineResult); Assertions.assertTrue(pipelineResult.hasTargets()); Assertions.assertEquals(2, pipelineResult.targets.size(), "Target count wrong!"); @@ -84,7 +84,7 @@ public class ReflectivePipelineTest { TestUtils.WPI2020Image.FOV); CVPipelineResult pipelineResult = pipeline.run(frameProvider.get(), QuirkyCamera.DefaultCamera); - printTestResults(pipelineResult); + TestUtils.printTestResults(pipelineResult); TestUtils.showImage( pipelineResult.inputAndOutputFrame.processedImage.getMat(), "Pipeline output"); @@ -95,7 +95,7 @@ public class ReflectivePipelineTest { while (true) { CVPipelineResult pipelineResult = pipeline.run(frame, QuirkyCamera.DefaultCamera); - printTestResults(pipelineResult); + TestUtils.printTestResults(pipelineResult); int preRelease = CVMat.getMatCount(); pipelineResult.release(); int postRelease = CVMat.getMatCount(); @@ -123,11 +123,4 @@ public class ReflectivePipelineTest { continuouslyRunPipeline(frameProvider.get(), settings); } - - private static void printTestResults(CVPipelineResult pipelineResult) { - double fps = 1000 / pipelineResult.getLatencyMillis(); - System.out.print( - "Pipeline ran in " + pipelineResult.getLatencyMillis() + "ms (" + fps + " fps), "); - System.out.println("Found " + pipelineResult.targets.size() + " valid targets"); - } } diff --git a/photon-core/src/test/java/org/photonvision/vision/pipeline/SolvePNPTest.java b/photon-core/src/test/java/org/photonvision/vision/pipeline/SolvePNPTest.java index b205a7f9d..fad273df4 100644 --- a/photon-core/src/test/java/org/photonvision/vision/pipeline/SolvePNPTest.java +++ b/photon-core/src/test/java/org/photonvision/vision/pipeline/SolvePNPTest.java @@ -24,7 +24,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import edu.wpi.first.math.geometry.Rotation3d; import edu.wpi.first.math.geometry.Translation3d; import edu.wpi.first.math.util.Units; -import java.util.stream.Collectors; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.photonvision.common.util.TestUtils; @@ -38,7 +37,6 @@ import org.photonvision.vision.opencv.ContourIntersectionDirection; import org.photonvision.vision.pipe.impl.HSVPipe; import org.photonvision.vision.pipeline.result.CVPipelineResult; import org.photonvision.vision.target.TargetModel; -import org.photonvision.vision.target.TrackedTarget; public class SolvePNPTest { private static final String LIFECAM_240P_CAL_FILE = "lifecam240p.json"; @@ -113,7 +111,7 @@ public class SolvePNPTest { frameProvider.requestHsvSettings(hsvParams); CVPipelineResult pipelineResult = pipeline.run(frameProvider.get(), QuirkyCamera.DefaultCamera); - printTestResults(pipelineResult); + TestUtils.printTestResultsWithLocation(pipelineResult); // Draw on input var outputPipe = new OutputStreamPipeline(); @@ -168,7 +166,7 @@ public class SolvePNPTest { frameProvider.requestHsvSettings(hsvParams); CVPipelineResult pipelineResult = pipeline.run(frameProvider.get(), QuirkyCamera.DefaultCamera); - printTestResults(pipelineResult); + TestUtils.printTestResultsWithLocation(pipelineResult); // Draw on input var outputPipe = new OutputStreamPipeline(); @@ -204,7 +202,7 @@ public class SolvePNPTest { while (true) { CVPipelineResult pipelineResult = pipeline.run(frame, QuirkyCamera.DefaultCamera); - printTestResults(pipelineResult); + TestUtils.printTestResultsWithLocation(pipelineResult); int preRelease = CVMat.getMatCount(); pipelineResult.release(); int postRelease = CVMat.getMatCount(); @@ -232,16 +230,4 @@ public class SolvePNPTest { continuouslyRunPipeline(frameProvider.get(), settings); } - - private static void printTestResults(CVPipelineResult pipelineResult) { - double fps = 1000 / pipelineResult.getLatencyMillis(); - System.out.println( - "Pipeline ran in " + pipelineResult.getLatencyMillis() + "ms (" + fps + " " + "fps)"); - System.out.println("Found " + pipelineResult.targets.size() + " valid targets"); - System.out.println( - "Found targets at " - + pipelineResult.targets.stream() - .map(TrackedTarget::getBestCameraToTarget3d) - .collect(Collectors.toList())); - } } diff --git a/photon-core/src/test/java/org/photonvision/vision/processes/VisionModuleManagerTest.java b/photon-core/src/test/java/org/photonvision/vision/processes/VisionModuleManagerTest.java index 465cc9bc6..9a9195796 100644 --- a/photon-core/src/test/java/org/photonvision/vision/processes/VisionModuleManagerTest.java +++ b/photon-core/src/test/java/org/photonvision/vision/processes/VisionModuleManagerTest.java @@ -190,7 +190,7 @@ public class VisionModuleManagerTest { sleep(1500); Assertions.assertNotNull(module0DataConsumer.result); - printTestResults(module0DataConsumer.result); + TestUtils.printTestResults(module0DataConsumer.result); } @Test @@ -253,13 +253,6 @@ public class VisionModuleManagerTest { assertTrue(idxs.contains(4)); } - private static void printTestResults(CVPipelineResult pipelineResult) { - double fps = 1000 / pipelineResult.getLatencyMillis(); - System.out.print( - "Pipeline ran in " + pipelineResult.getLatencyMillis() + "ms (" + fps + " fps), "); - System.out.println("Found " + pipelineResult.targets.size() + " valid targets"); - } - private void sleep(int millis) { try { Thread.sleep(millis);