From a9f1e50a192487bcf187f1f1feb0f41d74f46ec9 Mon Sep 17 00:00:00 2001 From: Programmers3539 Date: Sun, 31 Dec 2023 19:07:07 -0800 Subject: [PATCH] Fix Driver Mode Rotation (#1097) Demoves duplicate image rotation. Frames are rotated from the frame source provided. Then were rotated again in the driver mode pipeline. --- .../vision/pipeline/DriverModePipeline.java | 14 -------------- .../vision/processes/VisionRunner.java | 1 + 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/photon-core/src/main/java/org/photonvision/vision/pipeline/DriverModePipeline.java b/photon-core/src/main/java/org/photonvision/vision/pipeline/DriverModePipeline.java index f29cb2be3..7da971550 100644 --- a/photon-core/src/main/java/org/photonvision/vision/pipeline/DriverModePipeline.java +++ b/photon-core/src/main/java/org/photonvision/vision/pipeline/DriverModePipeline.java @@ -20,19 +20,15 @@ package org.photonvision.vision.pipeline; import java.util.List; import org.apache.commons.lang3.tuple.Pair; import org.photonvision.common.util.math.MathUtils; -import org.photonvision.raspi.LibCameraJNI; -import org.photonvision.vision.camera.CameraQuirk; import org.photonvision.vision.frame.Frame; import org.photonvision.vision.frame.FrameThresholdType; import org.photonvision.vision.pipe.impl.CalculateFPSPipe; import org.photonvision.vision.pipe.impl.Draw2dCrosshairPipe; import org.photonvision.vision.pipe.impl.ResizeImagePipe; -import org.photonvision.vision.pipe.impl.RotateImagePipe; import org.photonvision.vision.pipeline.result.DriverModePipelineResult; public class DriverModePipeline extends CVPipeline { - private final RotateImagePipe rotateImagePipe = new RotateImagePipe(); private final Draw2dCrosshairPipe draw2dCrosshairPipe = new Draw2dCrosshairPipe(); private final CalculateFPSPipe calculateFPSPipe = new CalculateFPSPipe(); private final ResizeImagePipe resizeImagePipe = new ResizeImagePipe(); @@ -51,10 +47,6 @@ public class DriverModePipeline @Override protected void setPipeParamsImpl() { - RotateImagePipe.RotateImageParams rotateImageParams = - new RotateImagePipe.RotateImageParams(settings.inputImageRotationMode); - rotateImagePipe.setParams(rotateImageParams); - Draw2dCrosshairPipe.Draw2dCrosshairParams draw2dCrosshairParams = new Draw2dCrosshairPipe.Draw2dCrosshairParams( frameStaticProperties, settings.streamingFrameDivisor, settings.inputImageRotationMode); @@ -72,7 +64,6 @@ public class DriverModePipeline @Override public DriverModePipelineResult process(Frame frame, DriverModePipelineSettings settings) { long totalNanos = 0; - boolean accelerated = LibCameraJNI.isSupported() && cameraQuirks.hasQuirk(CameraQuirk.PiCam); // apply pipes var inputMat = frame.colorImage.getMat(); @@ -80,11 +71,6 @@ public class DriverModePipeline boolean emptyIn = inputMat.empty(); if (!emptyIn) { - if (!accelerated) { - var rotateImageResult = rotateImagePipe.run(inputMat); - totalNanos += rotateImageResult.nanosElapsed; - } - totalNanos += resizeImagePipe.run(inputMat).nanosElapsed; var draw2dCrosshairResult = draw2dCrosshairPipe.run(Pair.of(inputMat, List.of())); diff --git a/photon-core/src/main/java/org/photonvision/vision/processes/VisionRunner.java b/photon-core/src/main/java/org/photonvision/vision/processes/VisionRunner.java index 60acc0d39..7fd0266d3 100644 --- a/photon-core/src/main/java/org/photonvision/vision/processes/VisionRunner.java +++ b/photon-core/src/main/java/org/photonvision/vision/processes/VisionRunner.java @@ -75,6 +75,7 @@ public class VisionRunner { // (pipeline-dependent). I kinda hate how much leak this has... // TODO would a callback object be a better fit? var wantedProcessType = pipeline.getThresholdType(); + frameSupplier.requestFrameThresholdType(wantedProcessType); var settings = pipeline.getSettings(); if (settings instanceof AdvancedPipelineSettings) {