From 50fb60b3a2482b0acdd4396ec0f5c1f4e611088a Mon Sep 17 00:00:00 2001 From: Banks Troutman Date: Mon, 23 Sep 2019 18:26:53 -0400 Subject: [PATCH] Potential fix for floating point crash with sliders --- .../main/java/com/chameleonvision/vision/Pipeline.java | 6 +++--- .../chameleonvision/vision/camera/CameraManager.java | 4 +++- .../com/chameleonvision/vision/process/CVProcess.java | 10 ++++++---- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/Main/src/main/java/com/chameleonvision/vision/Pipeline.java b/Main/src/main/java/com/chameleonvision/vision/Pipeline.java index ad965b37d..78eaa247a 100644 --- a/Main/src/main/java/com/chameleonvision/vision/Pipeline.java +++ b/Main/src/main/java/com/chameleonvision/vision/Pipeline.java @@ -12,9 +12,9 @@ public class Pipeline { public List value = Arrays.asList(50, 255); public boolean erode = false; public boolean dilate = false; - public List area = Arrays.asList(0, 100); - public List ratio = Arrays.asList(0, 20); - public List extent = Arrays.asList(0, 100); + public List area = Arrays.asList(0.0, 100.0); + public List ratio = Arrays.asList(0.0, 20.0); + public List extent = Arrays.asList(0.0, 100.0); public int is_binary = 0; public String sort_mode = "Largest"; public String target_group = "Single"; diff --git a/Main/src/main/java/com/chameleonvision/vision/camera/CameraManager.java b/Main/src/main/java/com/chameleonvision/vision/camera/CameraManager.java index c04c548db..3b1c3929c 100644 --- a/Main/src/main/java/com/chameleonvision/vision/camera/CameraManager.java +++ b/Main/src/main/java/com/chameleonvision/vision/camera/CameraManager.java @@ -21,6 +21,9 @@ public class CameraManager { private static final Path CamConfigPath = Paths.get(SettingsManager.SettingsPath.toString(), "Cams"); public static HashMap CameraPorts = new HashMap<>(); + + private static HashMap AllCamerasByName = new HashMap<>(); + static HashMap AllUsbCameraInfosByName = new HashMap<>() {{ var suffix = 0; for (var info : UsbCamera.enumerateUsbCameras()) { @@ -36,7 +39,6 @@ public class CameraManager { } } }}; - private static HashMap AllCamerasByName = new HashMap<>(); public static HashMap getAllCamerasByName() { return AllCamerasByName; 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 fa2edfa7f..5aff3aa28 100644 --- a/Main/src/main/java/com/chameleonvision/vision/process/CVProcess.java +++ b/Main/src/main/java/com/chameleonvision/vision/process/CVProcess.java @@ -53,12 +53,14 @@ public class CVProcess { return FoundContours; } - List FilterContours(List InputContours, List area, List ratio, List extent) { + List FilterContours(List InputContours, List area, List ratio, List extent) { for (MatOfPoint Contour : InputContours) { try { - 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)) { + double contourArea = Imgproc.contourArea(Contour); //TODO change scaling + double targetArea = (contourArea / CamVals.ImageArea) * 100; + double minArea = Math.pow(area.get(0), 4); + double maxArea = Math.pow(area.get(1), 4); + if (targetArea < minArea || targetArea > maxArea) { continue; } var rect = Imgproc.minAreaRect(new MatOfPoint2f(Contour.toArray()));