diff --git a/photon-core/src/main/java/org/photonvision/vision/pipe/impl/Draw2dTargetsPipe.java b/photon-core/src/main/java/org/photonvision/vision/pipe/impl/Draw2dTargetsPipe.java index cc8b79ec7..1752af0a2 100644 --- a/photon-core/src/main/java/org/photonvision/vision/pipe/impl/Draw2dTargetsPipe.java +++ b/photon-core/src/main/java/org/photonvision/vision/pipe/impl/Draw2dTargetsPipe.java @@ -40,7 +40,9 @@ public class Draw2dTargetsPipe @Override protected Void process(Pair> in) { - var imageSize = Math.sqrt(in.getLeft().rows() * in.getLeft().cols()); + var imRows = in.getLeft().rows(); + var imCols = in.getLeft().cols(); + var imageSize = Math.sqrt(imRows * imCols); var textSize = params.kPixelsToText * imageSize; var thickness = params.kPixelsToThickness * imageSize; diff --git a/photon-core/src/main/java/org/photonvision/vision/pipe/impl/FilterShapesPipe.java b/photon-core/src/main/java/org/photonvision/vision/pipe/impl/FilterShapesPipe.java index 651b93984..e0df8d3d8 100644 --- a/photon-core/src/main/java/org/photonvision/vision/pipe/impl/FilterShapesPipe.java +++ b/photon-core/src/main/java/org/photonvision/vision/pipe/impl/FilterShapesPipe.java @@ -50,8 +50,10 @@ public class FilterShapesPipe private boolean shouldRemove(CVShape shape) { return shape.shape != params.desiredShape - || shape.contour.getArea() / params.getFrameStaticProperties().imageArea > params.maxArea - || shape.contour.getArea() / params.getFrameStaticProperties().imageArea < params.minArea + || shape.contour.getArea() / params.getFrameStaticProperties().imageArea * 100.0 + > params.maxArea + || shape.contour.getArea() / params.getFrameStaticProperties().imageArea * 100.0 + < params.minArea || shape.contour.getPerimeter() > params.maxPeri || shape.contour.getPerimeter() < params.minPeri; } diff --git a/photon-core/src/main/java/org/photonvision/vision/pipeline/ColoredShapePipeline.java b/photon-core/src/main/java/org/photonvision/vision/pipeline/ColoredShapePipeline.java index cdda47c43..a4645b68c 100644 --- a/photon-core/src/main/java/org/photonvision/vision/pipeline/ColoredShapePipeline.java +++ b/photon-core/src/main/java/org/photonvision/vision/pipeline/ColoredShapePipeline.java @@ -25,6 +25,7 @@ import org.opencv.core.Mat; import org.opencv.core.Point; 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.*; import org.photonvision.vision.pipe.CVPipe.CVPipeResult; @@ -78,6 +79,23 @@ public class ColoredShapePipeline new RotateImagePipe.RotateImageParams(settings.inputImageRotationMode); rotateImagePipe.setParams(rotateImageParams); + if (cameraQuirks.hasQuirk(CameraQuirk.PiCam) && PicamJNI.isSupported()) { + PicamJNI.setThresholds( + settings.hsvHue.getFirst() / 180d, + settings.hsvSaturation.getFirst() / 255d, + settings.hsvValue.getFirst() / 255d, + settings.hsvHue.getSecond() / 180d, + settings.hsvSaturation.getSecond() / 255d, + settings.hsvValue.getSecond() / 255d); + + PicamJNI.setRotation(settings.inputImageRotationMode.value); + PicamJNI.setShouldCopyColor(settings.inputShouldShow); + } else { + var hsvParams = + new HSVPipe.HSVParams(settings.hsvHue, settings.hsvSaturation, settings.hsvValue); + hsvPipe.setParams(hsvParams); + } + ErodeDilatePipe.ErodeDilateParams erodeDilateParams = new ErodeDilatePipe.ErodeDilateParams(settings.erode, settings.dilate, 5); // TODO: add kernel size to pipeline settings @@ -203,8 +221,8 @@ public class ColoredShapePipeline // If we grabbed it (in color copy mode), make a new Mat of it rawInputMat = new Mat(inputMatPtr); } else { - // Otherwise, the input mat is frame we got from the camera - rawInputMat = frame.image.getMat(); + // Otherwise, use a blank/empty mat as placeholder + rawInputMat = new Mat(); } // We can skip a few steps if the image is single channel because we've already done them on diff --git a/photon-core/src/main/java/org/photonvision/vision/pipeline/ReflectivePipeline.java b/photon-core/src/main/java/org/photonvision/vision/pipeline/ReflectivePipeline.java index 45567f716..f44cb69a9 100644 --- a/photon-core/src/main/java/org/photonvision/vision/pipeline/ReflectivePipeline.java +++ b/photon-core/src/main/java/org/photonvision/vision/pipeline/ReflectivePipeline.java @@ -164,8 +164,8 @@ public class ReflectivePipeline extends CVPipeline