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
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..52b9d7f23 100644
--- a/Main/src/main/java/com/chameleonvision/vision/process/CVProcess.java
+++ b/Main/src/main/java/com/chameleonvision/vision/process/CVProcess.java
@@ -56,16 +56,18 @@ 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 / CamVals.ImageArea) * 100;
- double minArea = Math.pow(area.get(0), 4);
- double maxArea = Math.pow(area.get(1), 4);
- if (targetArea < minArea || targetArea > maxArea) {
+ double contourArea = Imgproc.contourArea(Contour);
+ double minArea = (area.get(0) * 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()));
- 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 || 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..fbb04a1b9 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) {
@@ -153,7 +154,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);