From d6850f73b1e0b451056f84fde09144a5c02658fa Mon Sep 17 00:00:00 2001 From: ori agranat Date: Sat, 14 Sep 2019 20:38:50 +0300 Subject: [PATCH 1/4] added target grouping --- .../java/Handlers/Vision/CameraProcess.java | 21 ++++-- .../java/Handlers/Vision/VisionProcess.java | 70 ++++++++++++++++++ Main/src/main/java/Main.java | 4 +- Main/src/main/java/Objects/Pipeline.java | 1 + .../classes/META-INF/Main.kotlin_module | Bin 0 -> 16 bytes 5 files changed, 87 insertions(+), 9 deletions(-) create mode 100644 Main/target/classes/META-INF/Main.kotlin_module diff --git a/Main/src/main/java/Handlers/Vision/CameraProcess.java b/Main/src/main/java/Handlers/Vision/CameraProcess.java index 123eba1ad..1a350f80e 100644 --- a/Main/src/main/java/Handlers/Vision/CameraProcess.java +++ b/Main/src/main/java/Handlers/Vision/CameraProcess.java @@ -20,15 +20,16 @@ public class CameraProcess implements Runnable{ @Override public void run() { + //calling all classes CameraServer cs = CameraServer.getInstance(); - NetworkTableInstance networkTableInstance = NetworkTableInstance.getDefault(); +// NetworkTableInstance networkTableInstance = NetworkTableInstance.getDefault(); SettingsManager manager = SettingsManager.getInstance(); - VisionProcess visionProcess = new VisionProcess(); + manager.CamerasCurrentPipeline.put(CameraName,manager.Cameras.get(CameraName).pipelines.keySet().toArray()[0].toString()); //Setting up camera and network table - var Table = networkTableInstance.getTable("/Chameleon-Vision/" + CameraName); - var PipeLineEntry = Table.getEntry("Pipeline"); - var DriverModeEntry = Table.getEntry("Driver_Mode"); +// var Table = networkTableInstance.getTable("/Chameleon-Vision/" + CameraName); +// var PipeLineEntry = Table.getEntry("Pipeline"); +// var DriverModeEntry = Table.getEntry("Driver_Mode"); var cv_sink = cs.getVideo(manager.UsbCameras.get(CameraName)); int Width = manager.Cameras.get(CameraName).camVideoMode.width; int Height = manager.Cameras.get(CameraName).camVideoMode.heigh; @@ -42,14 +43,20 @@ public class CameraProcess implements Runnable{ double VerticalView = FastMath.atan(FastMath.tan(DiagonalView/2) * (VerticalRatio / DiagonalView)) * 2; double H_FOCAL_LENGTH = Width / (2 * FastMath.tan(HorizontalView /2)); double V_FOCAL_LENGTH = Width / (2 * FastMath.tan(VerticalView /2)); + double CenterX = ((double) Width / 2) - 0.5; + double CenterY = ((double) Height/2) - 0.5; + double CamArea = (double)(Width * Height); + VisionProcess visionProcess = new VisionProcess(CenterX,CenterY,CamArea); Mat mat = new Mat(); long time; while (!Thread.interrupted()){ Pipeline pipeline = manager.Cameras.get(CameraName).pipelines.get(manager.CamerasCurrentPipeline.get(CameraName)); time = cv_sink.grabFrame(mat); - Mat HSVImage = visionProcess.HSVThreshold(pipeline.hue,pipeline.saturation,pipeline.value,mat,pipeline.erode,pipeline.dilate); - List Contours = visionProcess.FindContours(HSVImage); +// Mat HSVImage = visionProcess.HSVThreshold(pipeline.hue,pipeline.saturation,pipeline.value,mat,pipeline.erode,pipeline.dilate); +// List Contours = visionProcess.FindContours(HSVImage); +// List FilterdContours = visionProcess.FilterContours(Contours,pipeline.area,pipeline.ratio,pipeline.extent,pipeline.sort_mode,pipeline.target_intersection,pipeline.target_group); + cv_publish.putFrame(mat); } } diff --git a/Main/src/main/java/Handlers/Vision/VisionProcess.java b/Main/src/main/java/Handlers/Vision/VisionProcess.java index d1d3d3372..a53581808 100644 --- a/Main/src/main/java/Handlers/Vision/VisionProcess.java +++ b/Main/src/main/java/Handlers/Vision/VisionProcess.java @@ -4,10 +4,25 @@ import org.jetbrains.annotations.NotNull; import org.opencv.core.*; import org.opencv.imgproc.*; +import javax.swing.*; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; public class VisionProcess { + private HashMapTargetGrouping= new HashMap(){{ + put("Single",1); + put("Dual",2); + put("Triple",3); + put("Quadruple",4); + put("Quintuple",5); + }}; + private double CamArea,CenterX, CenterY; + VisionProcess(double CenterX, double CenterY, double CamArea){ + this.CenterX = CenterX; + this.CenterY = CenterY; + this.CamArea = CamArea; + } private Mat Kernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(5, 5)); public Mat HSVThreshold(@NotNull List hue, @NotNull List saturation , @NotNull List value, Mat image, boolean IsErode, boolean IsDilate){ @@ -29,4 +44,59 @@ public class VisionProcess { Imgproc.findContours(BinaryImage,Contours,new Mat(),Imgproc.RETR_EXTERNAL,Imgproc.CHAIN_APPROX_TC89_L1); return Contours; } + public List FilterContours(List InputContours, List area, List ratio, List extent, String SortMode,String TargetIntersection , String TargetGrouping){ + List FilteredContours = new ArrayList(); + for (MatOfPoint Contour : InputContours){ + try{ + var contourArea = Imgproc.contourArea(Contour); + double targetArea = (contourArea / CamArea) * 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)){ + continue; + } + var aspectRatio = rect.size.width / rect.size.height; + if (aspectRatio <= ratio.get(0) || aspectRatio >= ratio.get(1)){ + continue; + } + FilteredContours.add(Contour); + } catch (Exception e){ + continue; + } + } + return FilteredContours; + } + private List GroupTargets(List InputContours, String IntersectionPoint,String TargetGroup){ + if (!TargetGroup.equals("Single")){ + List FinalCountours = new ArrayList(); + for (var i = 0; i < InputContours.size(); i++){ + var FinalContour = InputContours.get(i); + for (var c = 0; c < (TargetGrouping.get(TargetGroup)-1);c++){ + try{ + MatOfPoint firstContour = InputContours.get(i + c); + MatOfPoint secoundContour = InputContours.get(i+c+1); + if (IsIntersecting(firstContour,secoundContour, IntersectionPoint)){ + System.out.println(""); + } + } catch (IndexOutOfBoundsException e){ + FinalContour = new MatOfPoint(); + break; + } + } + } + + } + return InputContours; + } + private boolean IsIntersecting(MatOfPoint ContourOne, MatOfPoint ContourTwo, String IntersectionPoint){ + Mat LineA = new Mat(); + Imgproc.fitLine(ContourOne,LineA,Imgproc.CV_DIST_L2,0,0.01,0.01); + Mat LineB = new Mat(); + Imgproc.fitLine(ContourTwo,LineB,Imgproc.CV_DIST_L2,0,0.01,0.01); + return true; + } + } diff --git a/Main/src/main/java/Main.java b/Main/src/main/java/Main.java index 078c07dda..10ccd73f4 100644 --- a/Main/src/main/java/Main.java +++ b/Main/src/main/java/Main.java @@ -10,9 +10,9 @@ import java.util.Map; public class Main { public static void main(String [] args) { SettingsManager manager = SettingsManager.getInstance(); - NetworkTableInstance.getDefault().startClientTeam(SettingsManager.GeneralSettings.team_number); +// NetworkTableInstance.getDefault().startClientTeam(SettingsManager.GeneralSettings.team_number); for (Map.Entry entry: SettingsManager.UsbCameras.entrySet()){ - new Thread(new CameraProcess(entry.getKey())); + new Thread(new CameraProcess(entry.getKey())).start(); } Server.main(8888); } diff --git a/Main/src/main/java/Objects/Pipeline.java b/Main/src/main/java/Objects/Pipeline.java index 75a1eb15f..86344c11a 100644 --- a/Main/src/main/java/Objects/Pipeline.java +++ b/Main/src/main/java/Objects/Pipeline.java @@ -16,6 +16,7 @@ public class Pipeline { public List extent = Arrays.asList(0,100); public boolean is_binary = false; public String sort_mode = "Largest"; + public String target_group = "Single"; public String target_intersection = "Largest"; public double M = 1; public double B = 0; diff --git a/Main/target/classes/META-INF/Main.kotlin_module b/Main/target/classes/META-INF/Main.kotlin_module new file mode 100644 index 0000000000000000000000000000000000000000..2983af70661ad375cc499ebc4da5a68ca46c532e GIT binary patch literal 16 RcmZQzU|?ooU|@t|egFVe02KfL literal 0 HcmV?d00001 From 440d68a1f1f09f961da64264cacb716e99110abb Mon Sep 17 00:00:00 2001 From: ori agranat Date: Sun, 15 Sep 2019 00:46:26 +0300 Subject: [PATCH 2/4] bugfix for camera mat 0 --- .../java/Handlers/Vision/CameraProcess.java | 21 ++++++++++++------- .../java/Handlers/Vision/VisionProcess.java | 2 +- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/Main/src/main/java/Handlers/Vision/CameraProcess.java b/Main/src/main/java/Handlers/Vision/CameraProcess.java index 1a350f80e..504227741 100644 --- a/Main/src/main/java/Handlers/Vision/CameraProcess.java +++ b/Main/src/main/java/Handlers/Vision/CameraProcess.java @@ -23,14 +23,16 @@ public class CameraProcess implements Runnable{ //calling all classes CameraServer cs = CameraServer.getInstance(); -// NetworkTableInstance networkTableInstance = NetworkTableInstance.getDefault(); + NetworkTableInstance networkTableInstance = NetworkTableInstance.getDefault(); SettingsManager manager = SettingsManager.getInstance(); manager.CamerasCurrentPipeline.put(CameraName,manager.Cameras.get(CameraName).pipelines.keySet().toArray()[0].toString()); //Setting up camera and network table -// var Table = networkTableInstance.getTable("/Chameleon-Vision/" + CameraName); -// var PipeLineEntry = Table.getEntry("Pipeline"); -// var DriverModeEntry = Table.getEntry("Driver_Mode"); + var Table = networkTableInstance.getTable("/Chameleon-Vision/" + CameraName); + var PipeLineEntry = Table.getEntry("Pipeline"); + var DriverModeEntry = Table.getEntry("Driver_Mode"); var cv_sink = cs.getVideo(manager.UsbCameras.get(CameraName)); + + int Width = manager.Cameras.get(CameraName).camVideoMode.width; int Height = manager.Cameras.get(CameraName).camVideoMode.heigh; var cv_publish = cs.putVideo(CameraName,Width,Height); @@ -53,10 +55,13 @@ public class CameraProcess implements Runnable{ while (!Thread.interrupted()){ Pipeline pipeline = manager.Cameras.get(CameraName).pipelines.get(manager.CamerasCurrentPipeline.get(CameraName)); time = cv_sink.grabFrame(mat); -// Mat HSVImage = visionProcess.HSVThreshold(pipeline.hue,pipeline.saturation,pipeline.value,mat,pipeline.erode,pipeline.dilate); -// List Contours = visionProcess.FindContours(HSVImage); -// List FilterdContours = visionProcess.FilterContours(Contours,pipeline.area,pipeline.ratio,pipeline.extent,pipeline.sort_mode,pipeline.target_intersection,pipeline.target_group); - cv_publish.putFrame(mat); + if (mat.cols() !=0 && mat.rows() != 0) { + Mat HSVImage = visionProcess.HSVThreshold(pipeline.hue, pipeline.saturation, pipeline.value, mat, pipeline.erode, pipeline.dilate); +// List Contours = visionProcess.FindContours(HSVImage); +// List FilterdContours = visionProcess.FilterContours(Contours, pipeline.area, pipeline.ratio, pipeline.extent, pipeline.sort_mode, pipeline.target_intersection, pipeline.target_group); + cv_publish.putFrame(mat); + } + } } diff --git a/Main/src/main/java/Handlers/Vision/VisionProcess.java b/Main/src/main/java/Handlers/Vision/VisionProcess.java index a53581808..90b5ae055 100644 --- a/Main/src/main/java/Handlers/Vision/VisionProcess.java +++ b/Main/src/main/java/Handlers/Vision/VisionProcess.java @@ -30,7 +30,7 @@ public class VisionProcess { Imgproc.cvtColor(image,hsv,Imgproc.COLOR_BGR2HSV,3); new Scalar(hue.get(0),saturation.get(0),value.get(0)); Mat threshold = new Mat(); - Core.inRange(threshold,new Scalar(hue.get(0),saturation.get(0),value.get(0)),new Scalar(hue.get(1),saturation.get(1),value.get(1)),threshold); + Core.inRange(hsv,new Scalar(hue.get(0),saturation.get(0),value.get(0)),new Scalar(hue.get(1),saturation.get(1),value.get(1)),threshold); if (IsErode){ Imgproc.erode(threshold,threshold, Kernel); } From ec5a94d076122d1d5ca630651b267607d4c35904 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sun, 15 Sep 2019 13:58:45 +0300 Subject: [PATCH 3/4] pom with opencv from wpilib --- Main/chameleon-vision.iml | 7 ++++++- Main/pom.xml | 29 +++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/Main/chameleon-vision.iml b/Main/chameleon-vision.iml index fdbbf52f7..0373954c4 100644 --- a/Main/chameleon-vision.iml +++ b/Main/chameleon-vision.iml @@ -10,6 +10,7 @@ + @@ -40,8 +41,12 @@ - + + + + + \ No newline at end of file diff --git a/Main/pom.xml b/Main/pom.xml index d063dbb01..208b0c7a2 100644 --- a/Main/pom.xml +++ b/Main/pom.xml @@ -102,5 +102,34 @@ gson RELEASE + + edu.wpi.first.thirdparty.frc2019.opencv + opencv-java + 3.4.4-5 + + + edu.wpi.first.thirdparty.frc2019.opencv + opencv-jni + 3.4.4-5 + windowsx86-64 + + edu.wpi.first.thirdparty.frc2019.opencv + opencv-jni + 3.4.4-5 + linuxx86-64 + + + edu.wpi.first.thirdparty.frc2019.opencv + opencv-jni + 3.4.4-5 + linuxathena + + + edu.wpi.first.thirdparty.frc2019.opencv + opencv-jni + 3.4.4-5 + linuxraspbian + + \ No newline at end of file From 25652ba32e9c87887ff95cb809d6341d782d3b5c Mon Sep 17 00:00:00 2001 From: Banks Troutman Date: Sun, 15 Sep 2019 15:03:44 -0400 Subject: [PATCH 4/4] Adjusted folder structure to sit under com.chameleonvision package --- .gitignore | 2 ++ Main/src/main/java/Main.java | 8 +++----- .../chameleonvision}/NoCameraException.java | 2 +- .../settings}/SettingsManager.java | 17 ++++++++++------- .../chameleonvision/vision}/CamVideoMode.java | 2 +- .../chameleonvision/vision}/Camera.java | 2 +- .../vision}/GeneralSettings.java | 4 ++-- .../chameleonvision/vision}/Pipeline.java | 2 +- .../vision/process}/CameraProcess.java | 14 +++++--------- .../vision/process}/VisionProcess.java | 3 +-- .../Web => com/chameleonvision/web}/Server.java | 5 ++--- 11 files changed, 29 insertions(+), 32 deletions(-) rename Main/src/main/java/{Exceptions => com/chameleonvision}/NoCameraException.java (81%) rename Main/src/main/java/{Classes => com/chameleonvision/settings}/SettingsManager.java (94%) rename Main/src/main/java/{Objects => com/chameleonvision/vision}/CamVideoMode.java (78%) rename Main/src/main/java/{Objects => com/chameleonvision/vision}/Camera.java (86%) rename Main/src/main/java/{Objects => com/chameleonvision/vision}/GeneralSettings.java (76%) rename Main/src/main/java/{Objects => com/chameleonvision/vision}/Pipeline.java (95%) rename Main/src/main/java/{Handlers/Vision => com/chameleonvision/vision/process}/CameraProcess.java (88%) rename Main/src/main/java/{Handlers/Vision => com/chameleonvision/vision/process}/VisionProcess.java (98%) rename Main/src/main/java/{Handlers/Web => com/chameleonvision/web}/Server.java (92%) diff --git a/.gitignore b/.gitignore index c85194bf6..ef32c47e9 100644 --- a/.gitignore +++ b/.gitignore @@ -105,3 +105,5 @@ fabric.properties .idea/caches/build_file_checksums.ser Main/Settings/ +Main/.gradle +Main/target diff --git a/Main/src/main/java/Main.java b/Main/src/main/java/Main.java index 10ccd73f4..fc584e472 100644 --- a/Main/src/main/java/Main.java +++ b/Main/src/main/java/Main.java @@ -1,9 +1,7 @@ -import Classes.SettingsManager; -import Handlers.Vision.CameraProcess; -import Handlers.Web.Server; +import com.chameleonvision.settings.SettingsManager; +import com.chameleonvision.vision.process.CameraProcess; +import com.chameleonvision.web.Server; import edu.wpi.cscore.UsbCamera; -import edu.wpi.first.networktables.NetworkTable; -import edu.wpi.first.networktables.NetworkTableInstance; import java.util.Map; diff --git a/Main/src/main/java/Exceptions/NoCameraException.java b/Main/src/main/java/com/chameleonvision/NoCameraException.java similarity index 81% rename from Main/src/main/java/Exceptions/NoCameraException.java rename to Main/src/main/java/com/chameleonvision/NoCameraException.java index 320671431..063da8f48 100644 --- a/Main/src/main/java/Exceptions/NoCameraException.java +++ b/Main/src/main/java/com/chameleonvision/NoCameraException.java @@ -1,4 +1,4 @@ -package Exceptions; +package com.chameleonvision; public class NoCameraException extends Exception { public NoCameraException(){ diff --git a/Main/src/main/java/Classes/SettingsManager.java b/Main/src/main/java/com/chameleonvision/settings/SettingsManager.java similarity index 94% rename from Main/src/main/java/Classes/SettingsManager.java rename to Main/src/main/java/com/chameleonvision/settings/SettingsManager.java index 964776d56..e714a3a41 100644 --- a/Main/src/main/java/Classes/SettingsManager.java +++ b/Main/src/main/java/com/chameleonvision/settings/SettingsManager.java @@ -1,10 +1,13 @@ -package Classes; -import Exceptions.NoCameraException; -import Objects.*; +package com.chameleonvision.settings; +import com.chameleonvision.NoCameraException; + import java.io.*; import java.nio.file.*; -import Objects.CamVideoMode; +import com.chameleonvision.vision.CamVideoMode; +import com.chameleonvision.vision.Camera; +import com.chameleonvision.vision.GeneralSettings; +import com.chameleonvision.vision.Pipeline; import com.google.gson.Gson; import java.util.ArrayList; import java.util.HashMap; @@ -33,10 +36,10 @@ public class SettingsManager { } return instance; } - public static HashMap Cameras = new HashMap(); + public static HashMap Cameras = new HashMap(); public static HashMap UsbCameras = new HashMap(); public static HashMap USBCamerasInfo = new HashMap(); - public static Objects.GeneralSettings GeneralSettings; + public static com.chameleonvision.vision.GeneralSettings GeneralSettings; public static HashMap CamerasCurrentPipeline = new HashMap(); public static HashMap CameraPort = new HashMap(); private Path SettingsPath = Paths.get(System.getProperty("user.dir"),"Settings"); @@ -47,7 +50,7 @@ public class SettingsManager { private void InitiateGeneralSettings(){ CheckPath(SettingsPath); try { - GeneralSettings = new Gson().fromJson(new FileReader(Paths.get(SettingsPath.toString(),"Settings.json").toString()), Objects.GeneralSettings.class); + GeneralSettings = new Gson().fromJson(new FileReader(Paths.get(SettingsPath.toString(),"Settings.json").toString()), com.chameleonvision.vision.GeneralSettings.class); } catch (FileNotFoundException e) { GeneralSettings = new GeneralSettings(); } diff --git a/Main/src/main/java/Objects/CamVideoMode.java b/Main/src/main/java/com/chameleonvision/vision/CamVideoMode.java similarity index 78% rename from Main/src/main/java/Objects/CamVideoMode.java rename to Main/src/main/java/com/chameleonvision/vision/CamVideoMode.java index 503971884..a288d100e 100644 --- a/Main/src/main/java/Objects/CamVideoMode.java +++ b/Main/src/main/java/com/chameleonvision/vision/CamVideoMode.java @@ -1,4 +1,4 @@ -package Objects; +package com.chameleonvision.vision; public class CamVideoMode { public int fps; diff --git a/Main/src/main/java/Objects/Camera.java b/Main/src/main/java/com/chameleonvision/vision/Camera.java similarity index 86% rename from Main/src/main/java/Objects/Camera.java rename to Main/src/main/java/com/chameleonvision/vision/Camera.java index 446258c36..d64bf4cb5 100644 --- a/Main/src/main/java/Objects/Camera.java +++ b/Main/src/main/java/com/chameleonvision/vision/Camera.java @@ -1,4 +1,4 @@ -package Objects; +package com.chameleonvision.vision; import java.util.HashMap; diff --git a/Main/src/main/java/Objects/GeneralSettings.java b/Main/src/main/java/com/chameleonvision/vision/GeneralSettings.java similarity index 76% rename from Main/src/main/java/Objects/GeneralSettings.java rename to Main/src/main/java/com/chameleonvision/vision/GeneralSettings.java index 843e6ffd0..c722d8ee8 100644 --- a/Main/src/main/java/Objects/GeneralSettings.java +++ b/Main/src/main/java/com/chameleonvision/vision/GeneralSettings.java @@ -1,4 +1,4 @@ -package Objects; +package com.chameleonvision.vision; public class GeneralSettings { public int team_number = 1577; @@ -6,7 +6,7 @@ public class GeneralSettings { public String ip = ""; public String gateway = ""; public String netmask = ""; - public String hostname = "Chameleon-Vision"; + public String hostname = "Chameleon-vision"; public String curr_camera = ""; public String curr_pipeline = ""; diff --git a/Main/src/main/java/Objects/Pipeline.java b/Main/src/main/java/com/chameleonvision/vision/Pipeline.java similarity index 95% rename from Main/src/main/java/Objects/Pipeline.java rename to Main/src/main/java/com/chameleonvision/vision/Pipeline.java index 86344c11a..ef63c57cf 100644 --- a/Main/src/main/java/Objects/Pipeline.java +++ b/Main/src/main/java/com/chameleonvision/vision/Pipeline.java @@ -1,4 +1,4 @@ -package Objects; +package com.chameleonvision.vision; import java.util.Arrays; import java.util.List; diff --git a/Main/src/main/java/Handlers/Vision/CameraProcess.java b/Main/src/main/java/com/chameleonvision/vision/process/CameraProcess.java similarity index 88% rename from Main/src/main/java/Handlers/Vision/CameraProcess.java rename to Main/src/main/java/com/chameleonvision/vision/process/CameraProcess.java index 504227741..e1c907c89 100644 --- a/Main/src/main/java/Handlers/Vision/CameraProcess.java +++ b/Main/src/main/java/com/chameleonvision/vision/process/CameraProcess.java @@ -1,16 +1,12 @@ -package Handlers.Vision; +package com.chameleonvision.vision.process; -import Classes.SettingsManager; -import Objects.Pipeline; -import edu.wpi.first.networktables.NetworkTable; +import com.chameleonvision.settings.SettingsManager; +import com.chameleonvision.vision.Pipeline; import edu.wpi.first.networktables.NetworkTableInstance; import edu.wpi.first.cameraserver.CameraServer; import org.opencv.core.Mat; import org.apache.commons.math3.fraction.Fraction; import org.apache.commons.math3.util.FastMath; -import org.opencv.core.MatOfPoint; - -import java.util.List; public class CameraProcess implements Runnable{ private String CameraName; @@ -25,9 +21,9 @@ public class CameraProcess implements Runnable{ CameraServer cs = CameraServer.getInstance(); NetworkTableInstance networkTableInstance = NetworkTableInstance.getDefault(); SettingsManager manager = SettingsManager.getInstance(); - manager.CamerasCurrentPipeline.put(CameraName,manager.Cameras.get(CameraName).pipelines.keySet().toArray()[0].toString()); + SettingsManager.CamerasCurrentPipeline.put(CameraName, SettingsManager.Cameras.get(CameraName).pipelines.keySet().toArray()[0].toString()); //Setting up camera and network table - var Table = networkTableInstance.getTable("/Chameleon-Vision/" + CameraName); + var Table = networkTableInstance.getTable("/Chameleon-vision/" + CameraName); var PipeLineEntry = Table.getEntry("Pipeline"); var DriverModeEntry = Table.getEntry("Driver_Mode"); var cv_sink = cs.getVideo(manager.UsbCameras.get(CameraName)); diff --git a/Main/src/main/java/Handlers/Vision/VisionProcess.java b/Main/src/main/java/com/chameleonvision/vision/process/VisionProcess.java similarity index 98% rename from Main/src/main/java/Handlers/Vision/VisionProcess.java rename to Main/src/main/java/com/chameleonvision/vision/process/VisionProcess.java index 90b5ae055..ea4d9c18f 100644 --- a/Main/src/main/java/Handlers/Vision/VisionProcess.java +++ b/Main/src/main/java/com/chameleonvision/vision/process/VisionProcess.java @@ -1,10 +1,9 @@ -package Handlers.Vision; +package com.chameleonvision.vision.process; import org.jetbrains.annotations.NotNull; import org.opencv.core.*; import org.opencv.imgproc.*; -import javax.swing.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; diff --git a/Main/src/main/java/Handlers/Web/Server.java b/Main/src/main/java/com/chameleonvision/web/Server.java similarity index 92% rename from Main/src/main/java/Handlers/Web/Server.java rename to Main/src/main/java/com/chameleonvision/web/Server.java index 257b72a45..53400b829 100644 --- a/Main/src/main/java/Handlers/Web/Server.java +++ b/Main/src/main/java/com/chameleonvision/web/Server.java @@ -1,11 +1,10 @@ -package Handlers.Web; +package com.chameleonvision.web; -import Classes.SettingsManager; +import com.chameleonvision.settings.SettingsManager; import io.javalin.Javalin; import io.javalin.websocket.WsContext; import java.util.ArrayList; import java.util.List; -import org.json.JSONObject; public class Server { private static List users = new ArrayList();