From 2d4acbaf59fc5d5285a95bc218cd7ee3e4add939 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 13 Sep 2019 20:08:40 +0300 Subject: [PATCH] added create new cam function --- Main/chameleon-vision.iml | 47 +++++++++++ Main/pom.xml | 12 +-- .../main/java/Classes/SettingsManager.java | 77 ++++++++++++++++--- Main/src/main/java/Objects/Camera.java | 14 ++++ Main/src/main/java/Objects/VideoMode.java | 9 +++ 5 files changed, 144 insertions(+), 15 deletions(-) create mode 100644 Main/chameleon-vision.iml create mode 100644 Main/src/main/java/Objects/Camera.java create mode 100644 Main/src/main/java/Objects/VideoMode.java diff --git a/Main/chameleon-vision.iml b/Main/chameleon-vision.iml new file mode 100644 index 000000000..fdbbf52f7 --- /dev/null +++ b/Main/chameleon-vision.iml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Main/pom.xml b/Main/pom.xml index 7b84fffb5..d063dbb01 100644 --- a/Main/pom.xml +++ b/Main/pom.xml @@ -84,12 +84,12 @@ wpiutil-java RELEASE - - - org.opencv - opencv-java - RELEASE - + + + + + + org.apache.commons diff --git a/Main/src/main/java/Classes/SettingsManager.java b/Main/src/main/java/Classes/SettingsManager.java index 0e9760ca4..e241a3295 100644 --- a/Main/src/main/java/Classes/SettingsManager.java +++ b/Main/src/main/java/Classes/SettingsManager.java @@ -2,13 +2,17 @@ package Classes; import Objects.*; import java.io.*; import java.nio.file.*; + +import Objects.VideoMode; import com.google.gson.Gson; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; import edu.wpi.cscore.*; +import org.opencv.video.Video; import org.opencv.videoio.VideoCapture; public class SettingsManager { @@ -17,6 +21,7 @@ public class SettingsManager { InitiateGeneralSettings(); InitiateCamerasInfo(); InitiateUsbCameras(); + InitiateCameras(); InitiateUsbCamerasSettings(); } public static synchronized SettingsManager getInstance(){ @@ -29,8 +34,8 @@ public class SettingsManager { } return instance; } - public static HashMap cams = new HashMap(); - public static HashMap UsbCameras = new HashMap(); + public static HashMap Cameras = new HashMap(); + public static HashMap UsbCameras = new HashMap(); public static HashMap USBCamerasInfo = new HashMap(); public static DefaultGeneralSettings GeneralSettings; public static HashMap CameraPort = new HashMap(); @@ -40,13 +45,7 @@ public class SettingsManager { private void InitiateGeneralSettings(){ - if (!Files.exists(SettingsPath)){ - try { - Files.createDirectories(SettingsPath); - } catch (IOException e) { - e.printStackTrace(); - } - } + CheckPath(SettingsPath); try { GeneralSettings = new Gson().fromJson(new FileReader(Paths.get(SettingsPath.toString(),"Settings.json").toString()),DefaultGeneralSettings.class); } catch (FileNotFoundException e) { @@ -76,9 +75,69 @@ public class SettingsManager { } } private void InitiateUsbCameras(){ + for(Map.Entry entry : USBCamerasInfo.entrySet()){ + var device = entry.getValue(); + var camera = new UsbCamera(device.name, device.dev); + UsbCameras.put(device.name,camera); + } + } + private void InitiateCameras(){ + CheckPath(CamsPath); + for(Map.Entry entry: USBCamerasInfo.entrySet()){ + var camPath = Paths.get(CamsPath.toString(),String.format("%s.json",entry.getKey())); + if(Files.exists(camPath)){ + try { + Camera cam = new Gson().fromJson(new FileReader(camPath.toString()),Camera.class); + Cameras.put(entry.getKey(),cam); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + } else{ + CreateNewCam(entry.getKey()); + } + } } private void InitiateUsbCamerasSettings(){ } + private void CheckPath(Path path){ + if (!Files.exists(path)){ + try { + Files.createDirectories(path); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + private void CreateNewCam(String CameraName){ + Camera cam = new Camera(); + var caminfo =USBCamerasInfo.get(CameraName); + cam.path = caminfo.path; + var videomode = UsbCameras.get(CameraName).enumerateVideoModes()[0]; + VideoMode CamVideoMode = new VideoMode(); + CamVideoMode.fps = videomode.fps; + CamVideoMode.heigh = videomode.height; + CamVideoMode.width = videomode.width; + CamVideoMode.pixel_format = videomode.pixelFormat.name(); + + cam.pipelines = new HashMap(); + cam.resolution = 0; + cam.FOV = 60.8; + Cameras.put(CameraName,cam); + CreateNewPipeline("",CameraName); + + } + private void CreateNewPipeline(String PipeName, String CamName){ + if (CamName.equals("")){ + CamName = GeneralSettings.curr_camera; + } + if (PipeName.equals("")){ + var suffix = 0; + PipeName = "pipeline" + suffix; + + + } + } + } diff --git a/Main/src/main/java/Objects/Camera.java b/Main/src/main/java/Objects/Camera.java new file mode 100644 index 000000000..b93ef62ed --- /dev/null +++ b/Main/src/main/java/Objects/Camera.java @@ -0,0 +1,14 @@ +package Objects; + +import edu.wpi.cscore.UsbCameraInfo; + +import java.util.HashMap; + +public class Camera { + public Double FOV = 60.8; + public String path = ""; + public HashMap pipelines; + public int resolution = 0; + public VideoMode videoMode; + +} diff --git a/Main/src/main/java/Objects/VideoMode.java b/Main/src/main/java/Objects/VideoMode.java new file mode 100644 index 000000000..fa9e92426 --- /dev/null +++ b/Main/src/main/java/Objects/VideoMode.java @@ -0,0 +1,9 @@ +package Objects; + +public class VideoMode { + public int fps; + public int width; + public int heigh; + public String pixel_format; + +}