diff --git a/Main/src/main/java/com/chameleonvision/vision/process/CVProcess.java b/Main/src/main/java/com/chameleonvision/vision/process/CVProcess.java index dca8e94a0..953a6ab3f 100644 --- a/Main/src/main/java/com/chameleonvision/vision/process/CVProcess.java +++ b/Main/src/main/java/com/chameleonvision/vision/process/CVProcess.java @@ -54,23 +54,28 @@ public class CVProcess { List FilterContours(List InputContours, List area, List ratio, List extent) { for (MatOfPoint Contour : InputContours){ try{ - var contourArea = Imgproc.contourArea(Contour); - double targetArea = FastMath.round((contourArea / CamVals.ImageArea) * 100); - if (targetArea <= area.get(0) || targetArea >= area.get(1)){ + var contourArea = Imgproc.contourArea(Contour);//TODO change scaling + int targetArea = (int) ((((float) contourArea) / CamVals.ImageArea) * 100); + if (targetArea < area.get(0) || targetArea > area.get(1)){ continue; } var rect = Imgproc.minAreaRect(new MatOfPoint2f(Contour.toArray())); var targetFullness = (contourArea / rect.size.area()) * 100; - if (targetFullness <= extent.get(0) || targetArea >= extent.get(1)){ + if (targetFullness < extent.get(0) || targetArea > extent.get(1)){ continue; } - var aspectRatio = rect.size.width / rect.size.height; - if (aspectRatio <= ratio.get(0) || aspectRatio >= ratio.get(1)){ + double aspectRatio = rect.size.width / rect.size.height;//TODO i think aspectRatio is inverted + System.out.println(aspectRatio); + if (aspectRatio < ratio.get(0) || aspectRatio > ratio.get(1)){ continue; } FilteredContours.add(Contour); } - catch (Exception ignored) { } + catch (Exception e) + { + System.err.println("Error while filtering contours"); + e.printStackTrace(); + } } return FilteredContours; }