From d4842154a32c76f422191b7e85acb9afddae74a5 Mon Sep 17 00:00:00 2001 From: Banks Troutman Date: Wed, 25 Sep 2019 13:32:24 -0400 Subject: [PATCH 1/6] Area slider adjustments, add NT for local testing --- Main/src/main/java/com/chameleonvision/Main.java | 3 +++ .../java/com/chameleonvision/vision/process/CVProcess.java | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Main/src/main/java/com/chameleonvision/Main.java b/Main/src/main/java/com/chameleonvision/Main.java index 956633600..b35cf8eb5 100644 --- a/Main/src/main/java/com/chameleonvision/Main.java +++ b/Main/src/main/java/com/chameleonvision/Main.java @@ -4,6 +4,7 @@ import com.chameleonvision.settings.SettingsManager; import com.chameleonvision.vision.camera.CameraManager; import com.chameleonvision.vision.process.VisionProcess; import com.chameleonvision.web.Server; +import edu.wpi.first.networktables.NetworkTableInstance; public class Main { public static void main(String[] args) { @@ -12,6 +13,8 @@ public class Main { for (var camSet : CameraManager.getAllCamerasByName().entrySet()) { new Thread(new VisionProcess(camSet.getValue())).start(); } + NetworkTableInstance.getDefault().startClient("localhost"); + // NetworkTableInstance.getDefault().startClientTeam(SettingsManager.GeneralSettings.team_number); Server.main(8888); } else { 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 bf48abdcf..197f633f0 100644 --- a/Main/src/main/java/com/chameleonvision/vision/process/CVProcess.java +++ b/Main/src/main/java/com/chameleonvision/vision/process/CVProcess.java @@ -58,8 +58,8 @@ public class CVProcess { try { 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); + double minArea = (double) area.get(0) / 100; + double maxArea = (double) area.get(1) / 100; if (targetArea < minArea || targetArea > maxArea) { continue; } From 42db3c12b5bdf8b5670a3d63afa176f4f45a4470 Mon Sep 17 00:00:00 2001 From: ori agranat Date: Wed, 25 Sep 2019 10:57:29 -0700 Subject: [PATCH 2/6] fixed extent and area --- .../chameleonvision/vision/process/CVProcess.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) 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 197f633f0..094f0402d 100644 --- a/Main/src/main/java/com/chameleonvision/vision/process/CVProcess.java +++ b/Main/src/main/java/com/chameleonvision/vision/process/CVProcess.java @@ -57,15 +57,18 @@ public class CVProcess { for (MatOfPoint Contour : InputContours) { try { double contourArea = Imgproc.contourArea(Contour); //TODO change scaling - double targetArea = (contourArea / CamVals.ImageArea) * 100; - double minArea = (double) area.get(0) / 100; - double maxArea = (double) area.get(1) / 100; - if (targetArea < minArea || targetArea > maxArea) { + double targetArea = contourArea; + double minArea = (double) (area.get(0) * CamVals.ImageArea)/ 100; + double maxArea = (double) (area.get(1) * CamVals.ImageArea) / 100; + if (targetArea <= minArea || targetArea >= maxArea) { 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)) { + + var targetFullness = contourArea; + double minExtent = (double) (extent.get(0) * rect.size.area())/ 100; + double maxExtent = (double) (extent.get(1) * rect.size.area()) / 100; + if (targetFullness <= minExtent || targetArea >= maxExtent) { continue; } double aspectRatio = rect.size.width / rect.size.height;//TODO i think aspectRatio is inverted From 69bb4bc562ae21228ed3465b4b7f52099cc6e780 Mon Sep 17 00:00:00 2001 From: ori agranat Date: Wed, 25 Sep 2019 11:08:59 -0700 Subject: [PATCH 3/6] bug fix in calibration --- .../java/com/chameleonvision/vision/process/VisionProcess.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Main/src/main/java/com/chameleonvision/vision/process/VisionProcess.java b/Main/src/main/java/com/chameleonvision/vision/process/VisionProcess.java index 0d1ef3ec8..88bf71b04 100644 --- a/Main/src/main/java/com/chameleonvision/vision/process/VisionProcess.java +++ b/Main/src/main/java/com/chameleonvision/vision/process/VisionProcess.java @@ -153,7 +153,7 @@ public class VisionProcess implements Runnable { pipelineResult.CalibratedY = camera.getCamVals().CenterY; } else { pipelineResult.CalibratedX = (finalRect.center.y - currentPipeline.B) / currentPipeline.M; - pipelineResult.CalibratedY = finalRect.center.x * currentPipeline.M + currentPipeline.B; + pipelineResult.CalibratedY = (finalRect.center.x * currentPipeline.M) + currentPipeline.B; } pipelineResult.Pitch = camera.getCamVals().CalculatePitch(finalRect.center.y, pipelineResult.CalibratedY); pipelineResult.Yaw = camera.getCamVals().CalculateYaw(finalRect.center.x, pipelineResult.CalibratedX); From b913ea7595dfb3b7c490d2266622d7b491055bda Mon Sep 17 00:00:00 2001 From: Banks Troutman Date: Wed, 25 Sep 2019 14:41:24 -0400 Subject: [PATCH 4/6] More area slider tweaking --- .../chameleonvision/vision/process/CVProcess.java | 12 ++++++------ .../vision/process/VisionProcess.java | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) 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 094f0402d..eac34424d 100644 --- a/Main/src/main/java/com/chameleonvision/vision/process/CVProcess.java +++ b/Main/src/main/java/com/chameleonvision/vision/process/CVProcess.java @@ -56,11 +56,11 @@ public class CVProcess { List FilterContours(List InputContours, List area, List ratio, List extent) { for (MatOfPoint Contour : InputContours) { try { - double contourArea = Imgproc.contourArea(Contour); //TODO change scaling - double targetArea = contourArea; - double minArea = (double) (area.get(0) * CamVals.ImageArea)/ 100; - double maxArea = (double) (area.get(1) * CamVals.ImageArea) / 100; - if (targetArea <= minArea || targetArea >= maxArea) { + double contourArea = Imgproc.contourArea(Contour); + double minAreaSlider = Math.log(area.get(0)); + double minArea = (minAreaSlider * CamVals.ImageArea) / 100; + double maxArea = (area.get(1) * CamVals.ImageArea) / 100; + if (contourArea <= minArea || contourArea >= maxArea) { continue; } var rect = Imgproc.minAreaRect(new MatOfPoint2f(Contour.toArray())); @@ -68,7 +68,7 @@ public class CVProcess { var targetFullness = contourArea; double minExtent = (double) (extent.get(0) * rect.size.area())/ 100; double maxExtent = (double) (extent.get(1) * rect.size.area()) / 100; - if (targetFullness <= minExtent || targetArea >= maxExtent) { + if (targetFullness <= minExtent || contourArea >= maxExtent) { continue; } double aspectRatio = rect.size.width / rect.size.height;//TODO i think aspectRatio is inverted diff --git a/Main/src/main/java/com/chameleonvision/vision/process/VisionProcess.java b/Main/src/main/java/com/chameleonvision/vision/process/VisionProcess.java index 0d1ef3ec8..a5841685d 100644 --- a/Main/src/main/java/com/chameleonvision/vision/process/VisionProcess.java +++ b/Main/src/main/java/com/chameleonvision/vision/process/VisionProcess.java @@ -146,6 +146,7 @@ public class VisionProcess implements Runnable { GroupedContours = cvProcess.GroupTargets(FilteredContours, currentPipeline.target_intersection, currentPipeline.target_group); if (GroupedContours.size() > 0) { var finalRect = cvProcess.SortTargetsToOne(GroupedContours, currentPipeline.sort_mode); +// System.out.printf("Largest Contour Area: %.2f\n", finalRect.size.area()); pipelineResult.RawPoint = finalRect; pipelineResult.IsValid = true; if (!currentPipeline.is_calibrated) { From 267d06f577fe197fb92b2d97bc7d78e758dac43e Mon Sep 17 00:00:00 2001 From: ori agranat Date: Wed, 25 Sep 2019 11:58:18 -0700 Subject: [PATCH 5/6] removed log scale for area --- .../java/com/chameleonvision/vision/process/CVProcess.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 eac34424d..52b9d7f23 100644 --- a/Main/src/main/java/com/chameleonvision/vision/process/CVProcess.java +++ b/Main/src/main/java/com/chameleonvision/vision/process/CVProcess.java @@ -57,8 +57,7 @@ public class CVProcess { for (MatOfPoint Contour : InputContours) { try { double contourArea = Imgproc.contourArea(Contour); - double minAreaSlider = Math.log(area.get(0)); - double minArea = (minAreaSlider * CamVals.ImageArea) / 100; + double minArea = (area.get(0) * CamVals.ImageArea) / 100; double maxArea = (area.get(1) * CamVals.ImageArea) / 100; if (contourArea <= minArea || contourArea >= maxArea) { continue; From e665a8c9e61e6c56a1333a6e27bbabec63729154 Mon Sep 17 00:00:00 2001 From: ori agranat Date: Wed, 25 Sep 2019 21:59:37 +0300 Subject: [PATCH 6/6] 1.0.2 beta --- Main/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Main/pom.xml b/Main/pom.xml index 8512fd210..25a606544 100644 --- a/Main/pom.xml +++ b/Main/pom.xml @@ -5,7 +5,7 @@ 4.0.0 org.chameleon-vision.main chameleon-vision - 1.0.2 + 1.0.2-BETA