diff --git a/Main/pom.xml b/Main/pom.xml
index 25a606544..78a85b50a 100644
--- a/Main/pom.xml
+++ b/Main/pom.xml
@@ -49,6 +49,11 @@
WPI Maven repo
https://first.wpi.edu/FRC/roborio/maven/release
+
+ WPIArtifactory
+ WPILib Artifactory Server-releases
+ https://frcmaven.wpi.edu:443/artifactory/release
+
@@ -84,7 +89,6 @@
gson
2.8.5
-
org.springframework
spring-beans
@@ -95,11 +99,17 @@
commons-lang3
3.9
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.10.0.pr1
+
@@ -182,6 +192,43 @@
+
+
+ edu.wpi.first.thirdparty.frc2020.opencv
+ opencv-java
+ 3.4.7-1
+
+
+ edu.wpi.first.thirdparty.frc2020.opencv
+ opencv-jni
+ 3.4.7-1
+ linuxaarch64bionic
+
+
+ edu.wpi.first.thirdparty.frc2020.opencv
+ opencv-jni
+ 3.4.7-1
+ linuxraspbian
+
+
+ edu.wpi.first.thirdparty.frc2020.opencv
+ opencv-jni
+ 3.4.7-1
+ linuxx86-64
+
+
+ edu.wpi.first.thirdparty.frc2020.opencv
+ opencv-jni
+ 3.4.7-1
+ osxx86-64
+
+
+ edu.wpi.first.thirdparty.frc2020.opencv
+ opencv-jni
+ 3.4.7-1
+ windowsx86-64
+
+
diff --git a/Main/src/main/java/com/chameleonvision/vision/camera/Camera.java b/Main/src/main/java/com/chameleonvision/vision/camera/Camera.java
index 6e2af5d8f..709f07a18 100644
--- a/Main/src/main/java/com/chameleonvision/vision/camera/Camera.java
+++ b/Main/src/main/java/com/chameleonvision/vision/camera/Camera.java
@@ -1,11 +1,13 @@
package com.chameleonvision.vision.camera;
+import com.chameleonvision.CameraException;
import com.chameleonvision.settings.SettingsManager;
import com.chameleonvision.vision.Pipeline;
import com.chameleonvision.web.ServerHandler;
import edu.wpi.cscore.*;
import edu.wpi.first.cameraserver.CameraServer;
import org.opencv.core.Mat;
+import org.springframework.core.env.Environment;
import java.util.Arrays;
import java.util.HashMap;
@@ -80,7 +82,12 @@ public class Camera {
var initTimeMs = (System.nanoTime() - initTimeout) / 1e6;
System.out.printf("Camera initialized in %.2fms\n", initTimeMs);
}
- availableVideoModes = Arrays.stream(UsbCam.enumerateVideoModes()).filter(v -> v.fps >= MINIMUM_FPS && v.width >= MINIMUM_WIDTH && v.height >= MINIMUM_HEIGHT).toArray(VideoMode[]::new);
+ var trueVideoModes = UsbCam.enumerateVideoModes();
+ availableVideoModes = Arrays.stream(trueVideoModes).filter(v -> v.fps >= MINIMUM_FPS && v.width >= MINIMUM_WIDTH && v.height >= MINIMUM_HEIGHT && v.pixelFormat == VideoMode.PixelFormat.kYUYV).toArray(VideoMode[]::new);
+ if (availableVideoModes.length == 0) {
+ System.err.println("Camera not supported!");
+ throw new RuntimeException(new CameraException(CameraException.CameraExceptionType.BAD_CAMERA));
+ }
if (videoModeIndex <= availableVideoModes.length - 1) {
setCamVideoMode(videoModeIndex, false);
} else {
@@ -109,9 +116,7 @@ public class Camera {
private void setCamVideoMode(CamVideoMode newVideoMode, boolean updateCvSource) {
var prevVideoMode = this.camVideoMode;
this.camVideoMode = newVideoMode;
- UsbCam.setPixelFormat(newVideoMode.getActualPixelFormat());
- UsbCam.setFPS(newVideoMode.fps);
- UsbCam.setResolution(newVideoMode.width, newVideoMode.height);
+ UsbCam.setVideoMode(newVideoMode.getActualPixelFormat(), newVideoMode.width, newVideoMode.height, newVideoMode.fps);
// update camera values
camVals = new CameraValues(this);