Potential fix for floating point crash with sliders

This commit is contained in:
Banks Troutman
2019-09-23 18:26:53 -04:00
parent 478222b428
commit 50fb60b3a2
3 changed files with 12 additions and 8 deletions

View File

@@ -12,9 +12,9 @@ public class Pipeline {
public List<Integer> value = Arrays.asList(50, 255);
public boolean erode = false;
public boolean dilate = false;
public List<Integer> area = Arrays.asList(0, 100);
public List<Integer> ratio = Arrays.asList(0, 20);
public List<Integer> extent = Arrays.asList(0, 100);
public List<Double> area = Arrays.asList(0.0, 100.0);
public List<Double> ratio = Arrays.asList(0.0, 20.0);
public List<Double> extent = Arrays.asList(0.0, 100.0);
public int is_binary = 0;
public String sort_mode = "Largest";
public String target_group = "Single";

View File

@@ -21,6 +21,9 @@ public class CameraManager {
private static final Path CamConfigPath = Paths.get(SettingsManager.SettingsPath.toString(), "Cams");
public static HashMap<String, Integer> CameraPorts = new HashMap<>();
private static HashMap<String, Camera> AllCamerasByName = new HashMap<>();
static HashMap<String, UsbCameraInfo> AllUsbCameraInfosByName = new HashMap<>() {{
var suffix = 0;
for (var info : UsbCamera.enumerateUsbCameras()) {
@@ -36,7 +39,6 @@ public class CameraManager {
}
}
}};
private static HashMap<String, Camera> AllCamerasByName = new HashMap<>();
public static HashMap<String, Camera> getAllCamerasByName() {
return AllCamerasByName;

View File

@@ -53,12 +53,14 @@ public class CVProcess {
return FoundContours;
}
List<MatOfPoint> FilterContours(List<MatOfPoint> InputContours, List<Integer> area, List<Integer> ratio, List<Integer> extent) {
List<MatOfPoint> FilterContours(List<MatOfPoint> InputContours, List<Double> area, List<Double> ratio, List<Double> 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()));