diff --git a/Main/src/main/java/com/chameleonvision/classabstraction/VisionManager.java b/Main/src/main/java/com/chameleonvision/classabstraction/VisionManager.java index 5f5a161a3..c113f5e94 100644 --- a/Main/src/main/java/com/chameleonvision/classabstraction/VisionManager.java +++ b/Main/src/main/java/com/chameleonvision/classabstraction/VisionManager.java @@ -7,6 +7,7 @@ import edu.wpi.cscore.UsbCameraInfo; import org.opencv.videoio.VideoCapture; import java.io.File; +import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -51,6 +52,12 @@ public class VisionManager { File cameraConfigFile = new File(cameraConfigPath.toString()); } + } else { + try { + Files.createDirectory(cameraConfigFolder); + } catch (IOException e) { + e.printStackTrace(); + } } }); diff --git a/Main/src/main/java/com/chameleonvision/classabstraction/VisionProcess.java b/Main/src/main/java/com/chameleonvision/classabstraction/VisionProcess.java index 7e801930f..f81d23f98 100644 --- a/Main/src/main/java/com/chameleonvision/classabstraction/VisionProcess.java +++ b/Main/src/main/java/com/chameleonvision/classabstraction/VisionProcess.java @@ -38,7 +38,7 @@ public class VisionProcess { // Thread to put frames on the dashboard this.cameraStreamer = new CameraStreamer(cameraProcess, name); - this.streamRunnable = new CameraStramerRunnable(streamTimeMs, cameraStreamer); + this.streamRunnable = new CameraStreamerRunnable(streamTimeMs, cameraStreamer); new Thread(streamRunnable).start(); // Thread to process vision data diff --git a/Main/src/main/java/com/chameleonvision/classabstraction/camera/CameraProperties.java b/Main/src/main/java/com/chameleonvision/classabstraction/camera/CameraProperties.java index 2d7589d5d..639bfe361 100644 --- a/Main/src/main/java/com/chameleonvision/classabstraction/camera/CameraProperties.java +++ b/Main/src/main/java/com/chameleonvision/classabstraction/camera/CameraProperties.java @@ -30,8 +30,6 @@ public class CameraProperties { public CameraProperties(UsbCamera baseCamera, double fov) { FOV = fov; - - // TODO: determine how to set the initial videomode properly videoModes = filterVideoModes(baseCamera.enumerateVideoModes()); } diff --git a/Main/src/main/java/com/chameleonvision/classabstraction/camera/USBCameraProcess.java b/Main/src/main/java/com/chameleonvision/classabstraction/camera/USBCameraProcess.java index 71a0f00a2..f9216e340 100644 --- a/Main/src/main/java/com/chameleonvision/classabstraction/camera/USBCameraProcess.java +++ b/Main/src/main/java/com/chameleonvision/classabstraction/camera/USBCameraProcess.java @@ -18,8 +18,9 @@ public class USBCameraProcess implements CameraProcess { public USBCameraProcess(UsbCamera camera, CameraConfig config) { baseCamera = camera; cvSink = CameraServer.getInstance().getVideo(baseCamera); - VideoMode vidMode = new VideoMode(VideoMode.PixelFormat.kYUYV, 640, 480, 60); properties = new CameraProperties(baseCamera, config.FOV); + + setVideoMode(properties.videoModes.get(0)); } @Override @@ -58,7 +59,7 @@ public class USBCameraProcess implements CameraProcess { public void setVideoMode(VideoMode mode) { try { baseCamera.setVideoMode(mode); - properties = new CameraProperties(baseCamera, properties.FOV); + properties.updateVideoMode(mode); } catch (VideoException e) { System.err.println("Current camera does not support resolution change"); }