From 4975e5cfe8265a04c0331d629fda041cd94329bf Mon Sep 17 00:00:00 2001 From: Banks Troutman Date: Sun, 24 Nov 2019 21:07:22 -0500 Subject: [PATCH] Fix CvExceptions for pipes, CVPipeline2d cleanups --- .../chameleonvision/vision/pipeline/CVPipeline2d.java | 11 ++++------- .../vision/pipeline/pipes/BlurPipe.java | 5 ++++- .../vision/pipeline/pipes/ErodeDilatePipe.java | 10 ++++------ .../vision/pipeline/pipes/HsvPipe.java | 7 +++++-- .../vision/pipeline/pipes/RotateFlipPipe.java | 5 ++++- 5 files changed, 21 insertions(+), 17 deletions(-) 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 34d99037b..c19410250 100644 --- a/Main/src/main/java/com/chameleonvision/vision/pipeline/CVPipeline2d.java +++ b/Main/src/main/java/com/chameleonvision/vision/pipeline/CVPipeline2d.java @@ -44,9 +44,9 @@ public class CVPipeline2d extends CVPipeline { public Pair run(Mat input) { long processStartNanos = System.nanoTime(); + input.copyTo(processBuffer); + try { if (blurSize > 0) { - Imgproc.blur(outputMat, outputMat, new Size(blurSize, blurSize)); + Imgproc.blur(processBuffer, processBuffer, new Size(blurSize, blurSize)); } } catch (CvException e) { System.err.println("(BlurPipe) Exception thrown by OpenCV: \n" + e.getMessage()); } long processTime = System.nanoTime() - processStartNanos; + processBuffer.copyTo(outputMat); Pair output = Pair.of(outputMat, processTime); processBuffer.release(); 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 3ecbef9c4..4534f8ae1 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 @@ -30,21 +30,19 @@ public class ErodeDilatePipe implements Pipe { public Pair run(Mat input) { long processStartNanos = System.nanoTime(); + input.copyTo(processBuffer); + if (erode) { - Imgproc.erode(input, processBuffer, kernel); + Imgproc.erode(processBuffer, processBuffer, kernel); } if (dilate) { Imgproc.erode(processBuffer, processBuffer, kernel); } - if(!erode && !dilate) { - input.copyTo(processBuffer); - } - long processTime = System.nanoTime() - processStartNanos; + processBuffer.copyTo(outputMat); Pair output = Pair.of(outputMat, processTime); - processBuffer.release(); return output; } 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 945a07ab1..454f851d5 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 @@ -29,14 +29,17 @@ public class HsvPipe implements Pipe { public Pair run(Mat input) { long processStartNanos = System.nanoTime(); + input.copyTo(processBuffer); + try { - Imgproc.cvtColor(input, outputMat, Imgproc.COLOR_RGB2HSV, 3); - Core.inRange(outputMat, hsvLower, hsvUpper, outputMat); + Imgproc.cvtColor(processBuffer, processBuffer, Imgproc.COLOR_RGB2HSV, 3); + Core.inRange(processBuffer, hsvLower, hsvUpper, processBuffer); } catch (CvException e) { System.err.println("(HsvPipe) Exception thrown by OpenCV: \n" + e.getMessage()); } long processTime = System.nanoTime() - processStartNanos; + processBuffer.copyTo(outputMat); Pair output = Pair.of(outputMat, processTime); processBuffer.release(); return output; 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 674b4ee16..a4a604dfb 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 @@ -28,10 +28,13 @@ public class RotateFlipPipe implements Pipe { public Pair run(Mat input) { long processStartNanos = System.nanoTime(); - Core.flip(input, processBuffer, flip.value); + input.copyTo(processBuffer); + + Core.flip(processBuffer, processBuffer, flip.value); Core.rotate(processBuffer, processBuffer, rotation.value); long processTime = System.nanoTime() - processStartNanos; + processBuffer.copyTo(outputMat); Pair output = Pair.of(outputMat, processTime); processBuffer.release(); return output;