diff --git a/photon-server/src/main/java/org/photonvision/vision/camera/CameraQuirks.java b/photon-server/src/main/java/org/photonvision/vision/camera/CameraQuirks.java deleted file mode 100644 index 12545948a..000000000 --- a/photon-server/src/main/java/org/photonvision/vision/camera/CameraQuirks.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (C) Photon Vision. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package org.photonvision.vision.camera; - -public enum CameraQuirks { - Gain -} diff --git a/photon-server/src/main/java/org/photonvision/vision/pipeline/CVPipeline.java b/photon-server/src/main/java/org/photonvision/vision/pipeline/CVPipeline.java index 04ffdba58..07f16c7f5 100644 --- a/photon-server/src/main/java/org/photonvision/vision/pipeline/CVPipeline.java +++ b/photon-server/src/main/java/org/photonvision/vision/pipeline/CVPipeline.java @@ -19,6 +19,7 @@ package org.photonvision.vision.pipeline; import java.util.List; import org.photonvision.common.util.math.MathUtils; +import org.photonvision.vision.camera.QuirkyCamera; import org.photonvision.vision.frame.Frame; import org.photonvision.vision.frame.FrameStaticProperties; import org.photonvision.vision.pipeline.result.CVPipelineResult; @@ -26,10 +27,13 @@ import org.photonvision.vision.pipeline.result.CVPipelineResult; public abstract class CVPipeline { protected S settings; protected FrameStaticProperties frameStaticProperties; + protected QuirkyCamera cameraQuirks; - protected void setPipeParams(FrameStaticProperties frameStaticProperties, S settings) { + protected void setPipeParams( + FrameStaticProperties frameStaticProperties, S settings, QuirkyCamera cameraQuirks) { this.settings = settings; this.frameStaticProperties = frameStaticProperties; + this.cameraQuirks = cameraQuirks; setPipeParamsImpl(); } @@ -46,11 +50,11 @@ public abstract class CVPipeline(); this.minSnapshots = minSnapshots; - - if (PicamJNI.isSupported()) { - PicamJNI.setRotation(settings.inputImageRotationMode.value); - PicamJNI.setShouldCopyColor(true); - } } @Override @@ -98,20 +94,24 @@ public class Calibrate3dPipeline new Calibrate3dPipe.CalibratePipeParams( new Size(frameStaticProperties.imageWidth, frameStaticProperties.imageHeight)); calibrate3dPipe.setParams(calibratePipeParams); + + if (cameraQuirks.hasQuirk(CameraQuirk.PiCam) && PicamJNI.isSupported()) { + PicamJNI.setRotation(settings.inputImageRotationMode.value); + PicamJNI.setShouldCopyColor(true); + } } @Override protected CVPipelineResult process(Frame frame, Calibration3dPipelineSettings settings) { Mat inputColorMat = frame.image.getMat(); - if (inputColorMat.channels() == 1 && PicamJNI.isSupported()) { + if (inputColorMat.channels() == 1 + && cameraQuirks.hasQuirk(CameraQuirk.PiCam) + && PicamJNI.isSupported()) { long colorMatPtr = PicamJNI.grabFrame(true); if (colorMatPtr == 0) throw new RuntimeException("Got null Mat from GPU Picam driver"); inputColorMat = new Mat(colorMatPtr); } - // Set the pipe parameters - setPipeParams(frame.frameStaticProperties, settings); - if (this.calibrating) { return new CVPipelineResult( 0, 0, null, new Frame(new CVMat(inputColorMat), frame.frameStaticProperties)); diff --git a/photon-server/src/main/java/org/photonvision/vision/pipeline/ColoredShapePipeline.java b/photon-server/src/main/java/org/photonvision/vision/pipeline/ColoredShapePipeline.java index d085225c2..91281cab6 100644 --- a/photon-server/src/main/java/org/photonvision/vision/pipeline/ColoredShapePipeline.java +++ b/photon-server/src/main/java/org/photonvision/vision/pipeline/ColoredShapePipeline.java @@ -192,8 +192,6 @@ public class ColoredShapePipeline @Override protected CVPipelineResult process(Frame frame, ColoredShapePipelineSettings settings) { - setPipeParams(frame.frameStaticProperties, settings); - long sumPipeNanosElapsed = 0L; var rotateImageResult = rotateImagePipe.run(frame.image.getMat()); diff --git a/photon-server/src/main/java/org/photonvision/vision/pipeline/DriverModePipeline.java b/photon-server/src/main/java/org/photonvision/vision/pipeline/DriverModePipeline.java index 390e3076e..2a17e4136 100644 --- a/photon-server/src/main/java/org/photonvision/vision/pipeline/DriverModePipeline.java +++ b/photon-server/src/main/java/org/photonvision/vision/pipeline/DriverModePipeline.java @@ -22,6 +22,7 @@ import org.apache.commons.lang3.tuple.Pair; import org.opencv.core.Mat; import org.photonvision.common.util.math.MathUtils; import org.photonvision.raspi.PicamJNI; +import org.photonvision.vision.camera.CameraQuirk; import org.photonvision.vision.frame.Frame; import org.photonvision.vision.opencv.CVMat; import org.photonvision.vision.pipe.impl.CalculateFPSPipe; @@ -56,7 +57,7 @@ public class DriverModePipeline resizeImagePipe.setParams( new ResizeImagePipe.ResizeImageParams(settings.streamingFrameDivisor)); - if (PicamJNI.isSupported()) { + if (PicamJNI.isSupported() && cameraQuirks.hasQuirk(CameraQuirk.PiCam)) { PicamJNI.setRotation(settings.inputImageRotationMode.value); PicamJNI.setShouldCopyColor(true); } @@ -65,7 +66,7 @@ public class DriverModePipeline @Override public DriverModePipelineResult process(Frame frame, DriverModePipelineSettings settings) { long totalNanos = 0; - boolean accelerated = PicamJNI.isSupported(); + boolean accelerated = PicamJNI.isSupported() && cameraQuirks.hasQuirk(CameraQuirk.PiCam); // apply pipes var inputMat = frame.image.getMat(); diff --git a/photon-server/src/main/java/org/photonvision/vision/pipeline/ReflectivePipeline.java b/photon-server/src/main/java/org/photonvision/vision/pipeline/ReflectivePipeline.java index 80100fe6d..8d6bfc7a6 100644 --- a/photon-server/src/main/java/org/photonvision/vision/pipeline/ReflectivePipeline.java +++ b/photon-server/src/main/java/org/photonvision/vision/pipeline/ReflectivePipeline.java @@ -21,6 +21,7 @@ import java.util.List; import org.opencv.core.Mat; import org.photonvision.common.util.math.MathUtils; import org.photonvision.raspi.PicamJNI; +import org.photonvision.vision.camera.CameraQuirk; import org.photonvision.vision.frame.Frame; import org.photonvision.vision.opencv.CVMat; import org.photonvision.vision.opencv.Contour; @@ -70,11 +71,7 @@ public class ReflectivePipeline extends CVPipeline frameSupplier; private final Supplier pipelineSupplier; private final Consumer pipelineResultConsumer; + private final QuirkyCamera cameraQuirks; private long loopCount; @@ -49,10 +51,12 @@ public class VisionRunner { public VisionRunner( FrameProvider frameSupplier, Supplier pipelineSupplier, - Consumer pipelineResultConsumer) { + Consumer pipelineResultConsumer, + QuirkyCamera cameraQuirks) { this.frameSupplier = frameSupplier; this.pipelineSupplier = pipelineSupplier; this.pipelineResultConsumer = pipelineResultConsumer; + this.cameraQuirks = cameraQuirks; visionProcessThread = new Thread(this::update); visionProcessThread.setName("VisionRunner - " + frameSupplier.getName()); @@ -69,7 +73,7 @@ public class VisionRunner { var frame = frameSupplier.get(); try { - var pipelineResult = pipeline.run(frame); + var pipelineResult = pipeline.run(frame, cameraQuirks); pipelineResultConsumer.accept(pipelineResult); } catch (Exception ex) { logger.error("Exception on loop " + loopCount); diff --git a/photon-server/src/test/java/org/photonvision/common/BenchmarkTest.java b/photon-server/src/test/java/org/photonvision/common/BenchmarkTest.java index 78d81f57c..81ebd1402 100644 --- a/photon-server/src/test/java/org/photonvision/common/BenchmarkTest.java +++ b/photon-server/src/test/java/org/photonvision/common/BenchmarkTest.java @@ -26,6 +26,7 @@ import org.junit.jupiter.api.Test; import org.photonvision.common.util.TestUtils; import org.photonvision.common.util.math.MathUtils; import org.photonvision.common.util.numbers.NumberListUtils; +import org.photonvision.vision.camera.QuirkyCamera; import org.photonvision.vision.frame.FrameProvider; import org.photonvision.vision.frame.provider.FileFrameProvider; import org.photonvision.vision.opencv.CVMat; @@ -122,7 +123,7 @@ public class BenchmarkTest { // warmup for 5 loops. System.out.println("Warming up for 5 loops..."); for (int i = 0; i < 5; i++) { - pipeline.run(frameProvider.get()); + pipeline.run(frameProvider.get(), QuirkyCamera.DefaultCamera); } final List processingTimes = new ArrayList<>(); @@ -140,7 +141,8 @@ public class BenchmarkTest { + frameProps.imageHeight); var benchmarkStartMillis = System.currentTimeMillis(); do { - CVPipelineResult pipelineResult = pipeline.run(frameProvider.get()); + CVPipelineResult pipelineResult = + pipeline.run(frameProvider.get(), QuirkyCamera.DefaultCamera); pipelineResult.release(); processingTimes.add(pipelineResult.processingMillis); latencyTimes.add(pipelineResult.getLatencyMillis()); diff --git a/photon-server/src/test/java/org/photonvision/common/ShapeBenchmarkTest.java b/photon-server/src/test/java/org/photonvision/common/ShapeBenchmarkTest.java index 4c4cc7e2c..a13cf9a7d 100644 --- a/photon-server/src/test/java/org/photonvision/common/ShapeBenchmarkTest.java +++ b/photon-server/src/test/java/org/photonvision/common/ShapeBenchmarkTest.java @@ -40,6 +40,7 @@ import org.junit.jupiter.api.Test; import org.photonvision.common.util.TestUtils; import org.photonvision.common.util.math.MathUtils; import org.photonvision.common.util.numbers.NumberListUtils; +import org.photonvision.vision.camera.QuirkyCamera; import org.photonvision.vision.frame.FrameProvider; import org.photonvision.vision.frame.provider.FileFrameProvider; import org.photonvision.vision.opencv.CVMat; @@ -150,7 +151,7 @@ public class ShapeBenchmarkTest { // warmup for 5 loops. System.out.println("Warming up for 5 loops..."); for (int i = 0; i < 5; i++) { - pipeline.run(frameProvider.get()); + pipeline.run(frameProvider.get(), QuirkyCamera.DefaultCamera); } final List processingTimes = new ArrayList<>(); @@ -168,7 +169,8 @@ public class ShapeBenchmarkTest { + frameProps.imageHeight); var benchmarkStartMillis = System.currentTimeMillis(); do { - CVPipelineResult pipelineResult = pipeline.run(frameProvider.get()); + CVPipelineResult pipelineResult = + pipeline.run(frameProvider.get(), QuirkyCamera.DefaultCamera); pipelineResult.release(); processingTimes.add(pipelineResult.processingMillis); latencyTimes.add(pipelineResult.getLatencyMillis()); diff --git a/photon-server/src/test/java/org/photonvision/vision/pipeline/Calibrate3dPipeTest.java b/photon-server/src/test/java/org/photonvision/vision/pipeline/Calibrate3dPipeTest.java index 6eebf0d23..6970a7e49 100644 --- a/photon-server/src/test/java/org/photonvision/vision/pipeline/Calibrate3dPipeTest.java +++ b/photon-server/src/test/java/org/photonvision/vision/pipeline/Calibrate3dPipeTest.java @@ -37,6 +37,7 @@ import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; import org.photonvision.common.util.TestUtils; import org.photonvision.vision.calibration.CameraCalibrationCoefficients; +import org.photonvision.vision.camera.QuirkyCamera; import org.photonvision.vision.frame.Frame; import org.photonvision.vision.frame.FrameStaticProperties; import org.photonvision.vision.opencv.CVMat; @@ -102,7 +103,8 @@ public class Calibrate3dPipeTest { calibration3dPipeline.run( new Frame( new CVMat(Imgcodecs.imread(file.getAbsolutePath())), - new FrameStaticProperties(640, 480, 60, new Rotation2d(), null))); + new FrameStaticProperties(640, 480, 60, new Rotation2d(), null)), + QuirkyCamera.DefaultCamera); // TestUtils.showImage(output.outputFrame.image.getMat()); output.release(); } @@ -117,7 +119,8 @@ public class Calibrate3dPipeTest { .run( new Frame( new CVMat(Imgcodecs.imread(directoryListing[0].getAbsolutePath())), - new FrameStaticProperties(640, 480, 60, new Rotation2d(), null))) + new FrameStaticProperties(640, 480, 60, new Rotation2d(), null)), + QuirkyCamera.DefaultCamera) .release(); assertTrue( @@ -264,7 +267,8 @@ public class Calibrate3dPipeTest { new Frame( new CVMat(Imgcodecs.imread(file.getAbsolutePath())), new FrameStaticProperties( - (int) imgRes.width, (int) imgRes.height, 67, new Rotation2d(), null))); + (int) imgRes.width, (int) imgRes.height, 67, new Rotation2d(), null)), + QuirkyCamera.DefaultCamera); // TestUtils.showImage(output.outputFrame.image.getMat(), file.getName(), 1); output.outputFrame.release(); diff --git a/photon-server/src/test/java/org/photonvision/vision/pipeline/CirclePNPTest.java b/photon-server/src/test/java/org/photonvision/vision/pipeline/CirclePNPTest.java index 98f6f40ed..cd264575c 100644 --- a/photon-server/src/test/java/org/photonvision/vision/pipeline/CirclePNPTest.java +++ b/photon-server/src/test/java/org/photonvision/vision/pipeline/CirclePNPTest.java @@ -25,6 +25,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.photonvision.common.util.TestUtils; import org.photonvision.vision.calibration.CameraCalibrationCoefficients; +import org.photonvision.vision.camera.QuirkyCamera; import org.photonvision.vision.frame.Frame; import org.photonvision.vision.frame.provider.FileFrameProvider; import org.photonvision.vision.opencv.CVMat; @@ -114,7 +115,7 @@ public class CirclePNPTest { new Rotation2d(), TestUtils.get2020LifeCamCoeffs(true)); - CVPipelineResult pipelineResult = pipeline.run(frameProvider.get()); + CVPipelineResult pipelineResult = pipeline.run(frameProvider.get(), QuirkyCamera.DefaultCamera); printTestResults(pipelineResult); TestUtils.showImage(pipelineResult.outputFrame.image.getMat(), "Pipeline output", 999999); @@ -125,7 +126,7 @@ public class CirclePNPTest { pipeline.settings = settings; while (true) { - CVPipelineResult pipelineResult = pipeline.run(frame); + CVPipelineResult pipelineResult = pipeline.run(frame, QuirkyCamera.DefaultCamera); printTestResults(pipelineResult); int preRelease = CVMat.getMatCount(); pipelineResult.release(); diff --git a/photon-server/src/test/java/org/photonvision/vision/pipeline/ColoredShapePipelineTest.java b/photon-server/src/test/java/org/photonvision/vision/pipeline/ColoredShapePipelineTest.java index 6d4df64b0..5576b4fed 100644 --- a/photon-server/src/test/java/org/photonvision/vision/pipeline/ColoredShapePipelineTest.java +++ b/photon-server/src/test/java/org/photonvision/vision/pipeline/ColoredShapePipelineTest.java @@ -19,8 +19,8 @@ package org.photonvision.vision.pipeline; import org.junit.jupiter.api.Test; import org.photonvision.common.util.TestUtils; +import org.photonvision.vision.camera.QuirkyCamera; import org.photonvision.vision.frame.Frame; -import org.photonvision.vision.frame.FrameStaticProperties; import org.photonvision.vision.frame.provider.FileFrameProvider; import org.photonvision.vision.opencv.ContourGroupingMode; import org.photonvision.vision.opencv.ContourIntersectionDirection; @@ -30,38 +30,29 @@ import org.photonvision.vision.pipeline.result.CVPipelineResult; public class ColoredShapePipelineTest { public static void testTriangleDetection( - ColoredShapePipeline pipeline, - ColoredShapePipelineSettings settings, - FrameStaticProperties frameStaticProperties, - Frame frame) { - pipeline.setPipeParams(frameStaticProperties, settings); - CVPipelineResult colouredShapePipelineResult = pipeline.run(frame); + ColoredShapePipeline pipeline, ColoredShapePipelineSettings settings, Frame frame) { + pipeline.settings = settings; + CVPipelineResult colouredShapePipelineResult = pipeline.run(frame, QuirkyCamera.DefaultCamera); TestUtils.showImage( colouredShapePipelineResult.outputFrame.image.getMat(), "Pipeline output: Triangle."); printTestResults(colouredShapePipelineResult); } public static void testQuadrilateralDetection( - ColoredShapePipeline pipeline, - ColoredShapePipelineSettings settings, - FrameStaticProperties frameStaticProperties, - Frame frame) { + ColoredShapePipeline pipeline, ColoredShapePipelineSettings settings, Frame frame) { settings.desiredShape = ContourShape.Quadrilateral; - pipeline.setPipeParams(frameStaticProperties, settings); - CVPipelineResult colouredShapePipelineResult = pipeline.run(frame); + pipeline.settings = settings; + CVPipelineResult colouredShapePipelineResult = pipeline.run(frame, QuirkyCamera.DefaultCamera); TestUtils.showImage( colouredShapePipelineResult.outputFrame.image.getMat(), "Pipeline output: Quadrilateral."); printTestResults(colouredShapePipelineResult); } public static void testCustomShapeDetection( - ColoredShapePipeline pipeline, - ColoredShapePipelineSettings settings, - FrameStaticProperties frameStaticProperties, - Frame frame) { + ColoredShapePipeline pipeline, ColoredShapePipelineSettings settings, Frame frame) { settings.desiredShape = ContourShape.Custom; - pipeline.setPipeParams(frameStaticProperties, settings); - CVPipelineResult colouredShapePipelineResult = pipeline.run(frame); + pipeline.settings = settings; + CVPipelineResult colouredShapePipelineResult = pipeline.run(frame, QuirkyCamera.DefaultCamera); TestUtils.showImage( colouredShapePipelineResult.outputFrame.image.getMat(), "Pipeline output: Custom."); printTestResults(colouredShapePipelineResult); @@ -69,13 +60,10 @@ public class ColoredShapePipelineTest { @Test public static void testCircleShapeDetection( - ColoredShapePipeline pipeline, - ColoredShapePipelineSettings settings, - FrameStaticProperties frameStaticProperties, - Frame frame) { + ColoredShapePipeline pipeline, ColoredShapePipelineSettings settings, Frame frame) { settings.desiredShape = ContourShape.Circle; - pipeline.setPipeParams(frameStaticProperties, settings); - CVPipelineResult colouredShapePipelineResult = pipeline.run(frame); + pipeline.settings = settings; + CVPipelineResult colouredShapePipelineResult = pipeline.run(frame, QuirkyCamera.DefaultCamera); TestUtils.showImage( colouredShapePipelineResult.outputFrame.image.getMat(), "Pipeline output: Circle."); printTestResults(colouredShapePipelineResult); @@ -95,8 +83,7 @@ public class ColoredShapePipelineTest { new FileFrameProvider( TestUtils.getPowercellImagePath(TestUtils.PowercellTestImages.kPowercell_test_6, false), TestUtils.WPI2019Image.FOV); - testCircleShapeDetection( - pipeline, settings, frameProvider.get().frameStaticProperties, frameProvider.get()); + testCircleShapeDetection(pipeline, settings, frameProvider.get()); } public static void main(String[] args) { @@ -120,14 +107,10 @@ public class ColoredShapePipelineTest { settings.accuracyPercentage = 30.0; ColoredShapePipeline pipeline = new ColoredShapePipeline(); - testTriangleDetection( - pipeline, settings, frameProvider.get().frameStaticProperties, frameProvider.get()); - testQuadrilateralDetection( - pipeline, settings, frameProvider.get().frameStaticProperties, frameProvider.get()); - testCustomShapeDetection( - pipeline, settings, frameProvider.get().frameStaticProperties, frameProvider.get()); - testCircleShapeDetection( - pipeline, settings, frameProvider.get().frameStaticProperties, frameProvider.get()); + testTriangleDetection(pipeline, settings, frameProvider.get()); + testQuadrilateralDetection(pipeline, settings, frameProvider.get()); + testCustomShapeDetection(pipeline, settings, frameProvider.get()); + testCircleShapeDetection(pipeline, settings, frameProvider.get()); testPowercellDetection(settings, pipeline); } diff --git a/photon-server/src/test/java/org/photonvision/vision/pipeline/ReflectivePipelineTest.java b/photon-server/src/test/java/org/photonvision/vision/pipeline/ReflectivePipelineTest.java index fb8ab9acd..e47df81ed 100644 --- a/photon-server/src/test/java/org/photonvision/vision/pipeline/ReflectivePipelineTest.java +++ b/photon-server/src/test/java/org/photonvision/vision/pipeline/ReflectivePipelineTest.java @@ -20,6 +20,7 @@ package org.photonvision.vision.pipeline; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.photonvision.common.util.TestUtils; +import org.photonvision.vision.camera.QuirkyCamera; import org.photonvision.vision.frame.Frame; import org.photonvision.vision.frame.provider.FileFrameProvider; import org.photonvision.vision.opencv.CVMat; @@ -50,7 +51,7 @@ public class ReflectivePipelineTest { CVPipelineResult pipelineResult; - pipelineResult = pipeline.run(frameProvider.get()); + pipelineResult = pipeline.run(frameProvider.get(), QuirkyCamera.DefaultCamera); printTestResults(pipelineResult); Assertions.assertTrue(pipelineResult.hasTargets()); @@ -74,7 +75,7 @@ public class ReflectivePipelineTest { TestUtils.getWPIImagePath(TestUtils.WPI2020Image.kBlueGoal_108in_Center, false), TestUtils.WPI2020Image.FOV); - CVPipelineResult pipelineResult = pipeline.run(frameProvider.get()); + CVPipelineResult pipelineResult = pipeline.run(frameProvider.get(), QuirkyCamera.DefaultCamera); printTestResults(pipelineResult); TestUtils.showImage(pipelineResult.outputFrame.image.getMat(), "Pipeline output"); @@ -84,7 +85,7 @@ public class ReflectivePipelineTest { var pipeline = new ReflectivePipeline(); while (true) { - CVPipelineResult pipelineResult = pipeline.run(frame); + CVPipelineResult pipelineResult = pipeline.run(frame, QuirkyCamera.DefaultCamera); printTestResults(pipelineResult); int preRelease = CVMat.getMatCount(); pipelineResult.release(); diff --git a/photon-server/src/test/java/org/photonvision/vision/pipeline/SolvePNPTest.java b/photon-server/src/test/java/org/photonvision/vision/pipeline/SolvePNPTest.java index 374104d63..25f4717fb 100644 --- a/photon-server/src/test/java/org/photonvision/vision/pipeline/SolvePNPTest.java +++ b/photon-server/src/test/java/org/photonvision/vision/pipeline/SolvePNPTest.java @@ -29,6 +29,7 @@ import org.junit.jupiter.api.Test; import org.opencv.imgcodecs.Imgcodecs; import org.photonvision.common.util.TestUtils; import org.photonvision.vision.calibration.CameraCalibrationCoefficients; +import org.photonvision.vision.camera.QuirkyCamera; import org.photonvision.vision.frame.Frame; import org.photonvision.vision.frame.provider.FileFrameProvider; import org.photonvision.vision.opencv.CVMat; @@ -109,7 +110,7 @@ public class SolvePNPTest { CVPipelineResult pipelineResult; - pipelineResult = pipeline.run(frameProvider.get()); + pipelineResult = pipeline.run(frameProvider.get(), QuirkyCamera.DefaultCamera); printTestResults(pipelineResult); // these numbers are not *accurate*, but they are known and expected @@ -142,7 +143,7 @@ public class SolvePNPTest { new Rotation2d(), TestUtils.get2020LifeCamCoeffs(true)); - CVPipelineResult pipelineResult = pipeline.run(frameProvider.get()); + CVPipelineResult pipelineResult = pipeline.run(frameProvider.get(), QuirkyCamera.DefaultCamera); printTestResults(pipelineResult); // these numbers are not *accurate*, but they are known and expected @@ -159,7 +160,7 @@ public class SolvePNPTest { pipeline.settings = settings; while (true) { - CVPipelineResult pipelineResult = pipeline.run(frame); + CVPipelineResult pipelineResult = pipeline.run(frame, QuirkyCamera.DefaultCamera); printTestResults(pipelineResult); int preRelease = CVMat.getMatCount(); pipelineResult.release();