diff --git a/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/CVPipeline2d.java b/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/CVPipeline2d.java index c0167d0e9..d7b45bacf 100644 --- a/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/CVPipeline2d.java +++ b/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/CVPipeline2d.java @@ -67,7 +67,7 @@ public class CVPipeline2d extends CVPipeline point = Arrays.asList(0, 0); -// public CalibrationMode calibrationMode = CalibrationMode.None; -// public double dualTargetCalibrationM = 1; -// public double dualTargetCalibrationB = 0; - public Calibration calibrationSettings = new Calibration(); - public static class Calibration - { - public CalibrationMode calibrationMode=CalibrationMode.None; - public List calibrationPoint= Arrays.asList(0,0); - public double calibrationM=1; - public double calibrationB=0; - } + public List point = Arrays.asList(0, 0); + public CalibrationMode calibrationMode = CalibrationMode.None; + public double dualTargetCalibrationM = 1; + public double dualTargetCalibrationB = 0; } diff --git a/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/DriverVisionPipeline.java b/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/DriverVisionPipeline.java index 4a0c8e3ca..e00c156e4 100644 --- a/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/DriverVisionPipeline.java +++ b/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/DriverVisionPipeline.java @@ -2,7 +2,9 @@ package com.chameleonvision.vision.pipeline; import com.chameleonvision.util.MemoryManager; import com.chameleonvision.vision.camera.CameraCapture; +import com.chameleonvision.vision.enums.CalibrationMode; import com.chameleonvision.vision.pipeline.pipes.Draw2dContoursPipe; +import com.chameleonvision.vision.pipeline.pipes.Draw2dCrosshairPipe; import com.chameleonvision.vision.pipeline.pipes.RotateFlipPipe; import org.apache.commons.lang3.tuple.Pair; import org.opencv.core.Mat; @@ -15,8 +17,10 @@ import static com.chameleonvision.vision.pipeline.DriverVisionPipeline.DriverPip public class DriverVisionPipeline extends CVPipeline { private RotateFlipPipe rotateFlipPipe; - private Draw2dContoursPipe draw2dContoursPipe; - private Draw2dContoursPipe.Draw2dContoursSettings draw2dContoursSettings = new Draw2dContoursPipe.Draw2dContoursSettings(); +// private Draw2dContoursPipe draw2dContoursPipe; +// private Draw2dContoursPipe.Draw2dContoursSettings draw2dContoursSettings = new Draw2dContoursPipe.Draw2dContoursSettings(); + private Draw2dCrosshairPipe drawCrosshairPipe; + private Draw2dCrosshairPipe.Draw2dCrosshairPipeSettings crosshairPipeSettings = new Draw2dCrosshairPipe.Draw2dCrosshairPipeSettings(); private final List blankList = List.of(); private final MemoryManager memoryManager = new MemoryManager(200, 20000); @@ -30,6 +34,8 @@ public class DriverVisionPipeline extends CVPipeline rotateFlipResult = rotateFlipPipe.run(inputMat); - Pair draw2dContoursResult = draw2dContoursPipe.run(Pair.of(rotateFlipResult.getLeft(), blankList)); - +// Pair draw2dContoursResult = draw2dContoursPipe.run(Pair.of(rotateFlipResult.getLeft(), blankList)); + Pair draw2dCrosshairResult = drawCrosshairPipe.run(Pair.of(rotateFlipResult.getLeft(),null)); memoryManager.run(); - return new DriverPipelineResult(null, draw2dContoursResult.getLeft(), 0); + return new DriverPipelineResult(null, draw2dCrosshairResult.getLeft(), 0); } public static class DriverPipelineResult extends CVPipelineResult { diff --git a/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/pipes/Collect2dTargetsPipe.java b/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/pipes/Collect2dTargetsPipe.java index 7cd425694..d74afcad2 100644 --- a/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/pipes/Collect2dTargetsPipe.java +++ b/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/pipes/Collect2dTargetsPipe.java @@ -16,15 +16,20 @@ public class Collect2dTargetsPipe implements Pipe, Captur private CaptureStaticProperties camProps; - private CVPipeline2dSettings.Calibration calibrationSettings; + private CalibrationMode calibrationMode; + private List calibrationPoint; + private double calibrationM, calibrationB; private List targets = new ArrayList<>(); - public Collect2dTargetsPipe(CVPipeline2dSettings.Calibration calibrationSettings, CaptureStaticProperties camProps) { - setConfig(calibrationSettings,camProps); + public Collect2dTargetsPipe(CalibrationMode calibrationMode, List calibrationPoint, double calibrationM, double calibrationB, CaptureStaticProperties camProps) { + setConfig(calibrationMode, calibrationPoint, calibrationM, calibrationB, camProps); } - public void setConfig(CVPipeline2dSettings.Calibration calibrationSettings, CaptureStaticProperties camProps) { - this.calibrationSettings = calibrationSettings; + public void setConfig(CalibrationMode calibrationMode, List calibrationPoint, double calibrationM, double calibrationB, CaptureStaticProperties camProps) { + this.calibrationMode = calibrationMode; + this.calibrationPoint = calibrationPoint; + this.calibrationM = calibrationM; + this.calibrationB = calibrationB; this.camProps = camProps; } @@ -40,18 +45,22 @@ public class Collect2dTargetsPipe implements Pipe, Captur for (RotatedRect r : input) { CVPipeline2d.Target2d t = new CVPipeline2d.Target2d(); t.rawPoint = r; - switch (calibrationSettings.calibrationMode) { + switch (this.calibrationMode) { + case Single: + if (this.calibrationPoint.get(0) == null) + this.calibrationPoint.set(0, camProps.centerX); + if (this.calibrationPoint.get(1) == null) + this.calibrationPoint.set(1, camProps.centerY); + t.calibratedX = this.calibrationPoint.get(0).doubleValue(); + t.calibratedY = this.calibrationPoint.get(1).doubleValue(); + break; case None: t.calibratedX = camProps.centerX; t.calibratedY = camProps.centerY; break; - case Single: - t.calibratedX = calibrationSettings.calibrationPoint.get(0).doubleValue(); - t.calibratedY = calibrationSettings.calibrationPoint.get(1).doubleValue(); - break; case Dual: - t.calibratedX = (r.center.y - calibrationSettings.calibrationB) / calibrationSettings.calibrationM; - t.calibratedY = (r.center.x * calibrationSettings.calibrationM) + calibrationSettings.calibrationB; + t.calibratedX = (r.center.y - this.calibrationB) / this.calibrationM; + t.calibratedY = (r.center.x * this.calibrationM) + this.calibrationB; break; } diff --git a/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/pipes/Draw2dCrosshairPipe.java b/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/pipes/Draw2dCrosshairPipe.java index f64b8df67..effea537c 100644 --- a/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/pipes/Draw2dCrosshairPipe.java +++ b/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/pipes/Draw2dCrosshairPipe.java @@ -2,6 +2,7 @@ package com.chameleonvision.vision.pipeline.pipes; import com.chameleonvision.util.Helpers; import com.chameleonvision.vision.camera.CaptureStaticProperties; +import com.chameleonvision.vision.enums.CalibrationMode; import com.chameleonvision.vision.pipeline.CVPipeline2d; import com.chameleonvision.vision.pipeline.CVPipeline2dSettings; import org.apache.commons.lang3.tuple.Pair; @@ -16,19 +17,23 @@ public class Draw2dCrosshairPipe implements Pipe calibrationPoint; + private double calibrationM, calibrationB; private Point xMax = new Point(), xMin = new Point(), yMax = new Point(), yMin = new Point(); - public Draw2dCrosshairPipe(Draw2dCrosshairPipeSettings crosshairSettings, CVPipeline2dSettings.Calibration calibrationSettings) { - this.crosshairSettings = crosshairSettings; - this.calibrationSettings = calibrationSettings; + public Draw2dCrosshairPipe(Draw2dCrosshairPipeSettings crosshairSettings, CalibrationMode calibrationMode, List calibrationPoint, double calibrationM, double calibrationB) { + setConfig(crosshairSettings, calibrationMode, calibrationPoint, calibrationM, calibrationB); } - public void setConfig(boolean showCrosshair, CVPipeline2dSettings.Calibration calibrationSettings) { - this.crosshairSettings.showCrosshair = showCrosshair; - this.calibrationSettings = calibrationSettings; + public void setConfig(Draw2dCrosshairPipeSettings crosshairSettings, CalibrationMode calibrationMode, List calibrationPoint, double calibrationM, double calibrationB) { + this.crosshairSettings = crosshairSettings; + this.calibrationMode = calibrationMode; + this.calibrationPoint = calibrationPoint; + this.calibrationM = calibrationM; + this.calibrationB = calibrationB; } @Override @@ -40,23 +45,24 @@ public class Draw2dCrosshairPipe implements Pipe