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();