diff --git a/Main/chameleon-vision.iml b/Main/chameleon-vision.iml index 72eb49dc1..6f3e66cfc 100644 --- a/Main/chameleon-vision.iml +++ b/Main/chameleon-vision.iml @@ -12,6 +12,12 @@ + + + + + + @@ -50,13 +56,13 @@ - - - - - - - + + + + + + + diff --git a/Main/src/main/java/com/chameleonvision/vision/pipeline/CVPipeline2d.java b/Main/src/main/java/com/chameleonvision/vision/pipeline/CVPipeline2d.java index fd057df30..34d99037b 100644 --- a/Main/src/main/java/com/chameleonvision/vision/pipeline/CVPipeline2d.java +++ b/Main/src/main/java/com/chameleonvision/vision/pipeline/CVPipeline2d.java @@ -1,5 +1,6 @@ package com.chameleonvision.vision.pipeline; +import com.chameleonvision.vision.camera.CameraProcess; import com.chameleonvision.vision.camera.CameraStaticProperties; import com.chameleonvision.vision.pipeline.pipes.*; import com.chameleonvision.vision.enums.ImageRotation; @@ -16,6 +17,16 @@ public class CVPipeline2d extends CVPipeline { - private final int blurSize; + private int blurSize; private Mat processBuffer = new Mat(); private Mat outputMat = new Mat(); @@ -17,6 +17,10 @@ public class BlurPipe implements Pipe { this.blurSize = blurSize; } + public void setConfig(int blurSize) { + this.blurSize = blurSize; + } + @Override public Pair run(Mat input) { long processStartNanos = System.nanoTime(); diff --git a/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/Collect2dTargetsPipe.java b/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/Collect2dTargetsPipe.java index cb0111c76..c035e138e 100644 --- a/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/Collect2dTargetsPipe.java +++ b/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/Collect2dTargetsPipe.java @@ -12,14 +12,24 @@ import java.util.List; public class Collect2dTargetsPipe implements Pipe, List> { - private final CalibrationMode calibrationMode; - private final CameraStaticProperties camProps; - private final List calibrationPoint; - private final double calibrationM, calibrationB; + private CalibrationMode calibrationMode; + private CameraStaticProperties camProps; + private List calibrationPoint; + private double calibrationM, calibrationB; private List targets = new ArrayList<>(); - public Collect2dTargetsPipe(CalibrationMode calibrationMode, List calibrationPoint, double calibrationM, double calibrationB, CameraStaticProperties camProps) { + public Collect2dTargetsPipe(CalibrationMode calibrationMode, List calibrationPoint, + double calibrationM, double calibrationB, CameraStaticProperties camProps) { + this.calibrationMode = calibrationMode; + this.camProps = camProps; + this.calibrationPoint = calibrationPoint; + this.calibrationM = calibrationM; + this.calibrationB = calibrationB; + } + + public void setConfig(CalibrationMode calibrationMode, List calibrationPoint, + double calibrationM, double calibrationB, CameraStaticProperties camProps) { this.calibrationMode = calibrationMode; this.camProps = camProps; this.calibrationPoint = calibrationPoint; diff --git a/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/ErodeDilatePipe.java b/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/ErodeDilatePipe.java index adb26805f..3ecbef9c4 100644 --- a/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/ErodeDilatePipe.java +++ b/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/ErodeDilatePipe.java @@ -7,8 +7,9 @@ import org.opencv.imgproc.Imgproc; public class ErodeDilatePipe implements Pipe { - private final boolean erode, dilate; - private final Mat kernel; + private boolean erode; + private boolean dilate; + private Mat kernel; private Mat processBuffer = new Mat(); private Mat outputMat = new Mat(); @@ -19,6 +20,12 @@ public class ErodeDilatePipe implements Pipe { kernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(kernelSize, kernelSize)); } + public void setConfig(boolean erode, boolean dilate, int kernelSize) { + this.erode = erode; + this.dilate = dilate; + kernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(kernelSize, kernelSize)); + } + @Override public Pair run(Mat input) { long processStartNanos = System.nanoTime(); diff --git a/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/FilterContoursPipe.java b/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/FilterContoursPipe.java index 429b79052..b77b04016 100644 --- a/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/FilterContoursPipe.java +++ b/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/FilterContoursPipe.java @@ -13,8 +13,10 @@ import java.util.List; public class FilterContoursPipe implements Pipe, List> { - private final List area, ratio, extent; - private final CameraStaticProperties camProps; + private List area; + private List ratio; + private List extent; + private CameraStaticProperties camProps; private List filteredContours = new ArrayList<>(); @@ -25,6 +27,13 @@ public class FilterContoursPipe implements Pipe, List area, List ratio, List extent, CameraStaticProperties camProps) { + this.area = area; + this.ratio = ratio; + this.extent = extent; + this.camProps = camProps; + } + @Override public Pair, Long> run(List input) { long processStartNanos = System.nanoTime(); diff --git a/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/GroupContoursPipe.java b/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/GroupContoursPipe.java index 4f9581b31..89bc37cc3 100644 --- a/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/GroupContoursPipe.java +++ b/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/GroupContoursPipe.java @@ -18,8 +18,8 @@ public class GroupContoursPipe implements Pipe, List sortByMomentsX = Comparator.comparingDouble(GroupContoursPipe::calcMomentsX); - private final TargetGroup group; - private final TargetIntersection intersection; + private TargetGroup group; + private TargetIntersection intersection; private List groupedContours = new ArrayList<>(); private MatOfPoint2f intersectMatA = new MatOfPoint2f(); @@ -30,6 +30,11 @@ public class GroupContoursPipe implements Pipe, List, Long> run(List input) { long processStartNanos = System.nanoTime(); diff --git a/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/HsvPipe.java b/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/HsvPipe.java index 9fd5fe42e..945a07ab1 100644 --- a/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/HsvPipe.java +++ b/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/HsvPipe.java @@ -9,7 +9,8 @@ import org.opencv.imgproc.Imgproc; public class HsvPipe implements Pipe { - private final Scalar hsvLower, hsvUpper; + private Scalar hsvLower; + private Scalar hsvUpper; private Mat processBuffer = new Mat(); private Mat outputMat = new Mat(); @@ -19,6 +20,11 @@ public class HsvPipe implements Pipe { this.hsvUpper = hsvUpper; } + public void setConfig(Scalar hsvLower, Scalar hsvUpper) { + this.hsvLower = hsvLower; + this.hsvUpper = hsvUpper; + } + @Override public Pair run(Mat input) { long processStartNanos = System.nanoTime(); diff --git a/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/RotateFlipPipe.java b/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/RotateFlipPipe.java index cb7378d5c..674b4ee16 100644 --- a/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/RotateFlipPipe.java +++ b/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/RotateFlipPipe.java @@ -8,8 +8,8 @@ import org.opencv.core.Mat; public class RotateFlipPipe implements Pipe { - private final ImageRotation rotation; - private final ImageFlipMode flip; + private ImageRotation rotation; + private ImageFlipMode flip; private Mat processBuffer = new Mat(); private Mat outputMat = new Mat(); @@ -19,6 +19,11 @@ public class RotateFlipPipe implements Pipe { this.flip = flip; } + public void setConfig(ImageRotation rotation, ImageFlipMode flip) { + this.rotation = rotation; + this.flip = flip; + } + @Override public Pair run(Mat input) { long processStartNanos = System.nanoTime(); diff --git a/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/SortContoursPipe.java b/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/SortContoursPipe.java index 89454222a..457a7ae68 100644 --- a/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/SortContoursPipe.java +++ b/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/SortContoursPipe.java @@ -24,8 +24,8 @@ public class SortContoursPipe implements Pipe, List SortByRightmostComparator = SortByLeftmostComparator.reversed(); - private final SortMode sort; - private final CameraStaticProperties camProps; + private SortMode sort; + private CameraStaticProperties camProps; private List sortedContours = new ArrayList<>(); @@ -34,6 +34,11 @@ public class SortContoursPipe implements Pipe, List, Long> run(List input) { long processStartNanos = System.nanoTime(); diff --git a/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/SpeckleRejectPipe.java b/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/SpeckleRejectPipe.java index ebbd8ab52..5fe11e479 100644 --- a/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/SpeckleRejectPipe.java +++ b/Main/src/main/java/com/chameleonvision/vision/pipeline/pipes/SpeckleRejectPipe.java @@ -9,7 +9,7 @@ import java.util.List; public class SpeckleRejectPipe implements Pipe, List> { - private final double minPercentOfAvg; + private double minPercentOfAvg; private List despeckledContours = new ArrayList<>(); @@ -17,6 +17,10 @@ public class SpeckleRejectPipe implements Pipe, List, Long> run(List input) { long processStartNanos = System.nanoTime();