Start work on video mode selection

This commit is contained in:
Matt
2019-11-27 21:11:05 -08:00
parent 9e068ea0f0
commit febd7292cf
7 changed files with 24 additions and 7 deletions

View File

@@ -1,7 +1,6 @@
package com.chameleonvision.vision;
import com.chameleonvision.Debug;
import com.chameleonvision.Main;
import com.chameleonvision.config.ConfigManager;
import com.chameleonvision.util.LoopingRunnable;
import com.chameleonvision.vision.camera.CameraCapture;
@@ -16,7 +15,6 @@ import edu.wpi.first.wpiutil.CircularBuffer;
import org.apache.commons.lang3.tuple.Pair;
import org.opencv.core.Mat;
import java.net.Socket;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -237,6 +235,14 @@ public class VisionProcess {
cameraStreamer.setNewVideoMode(newMode);
}
public VideoMode getCurrentVideoMode() {
return cameraCapture.getCurrentVideoMode();
}
public List<VideoMode> getPossibleVideoModes() {
return cameraCapture.getProperties().videoModes;
}
public List<CVPipeline> getPipelines() {
return pipelines;
}

View File

@@ -6,6 +6,8 @@ import edu.wpi.cscore.VideoMode;
public interface CameraCapture extends ImageCapture {
USBCameraProperties getProperties();
public VideoMode getCurrentVideoMode();
/**
* Set the exposure of the camera
* @param exposure the new exposure to set the camera to

View File

@@ -1,5 +1,6 @@
package com.chameleonvision.vision.camera;
import edu.wpi.cscore.VideoMode;
import org.apache.commons.math3.fraction.Fraction;
import org.apache.commons.math3.util.FastMath;
@@ -13,8 +14,10 @@ public class CaptureStaticProperties {
public final double centerY;
public final double horizontalFocalLength;
public final double verticalFocalLength;
public final VideoMode mode;
public CaptureStaticProperties(int imageWidth, int imageHeight, double fov) {
public CaptureStaticProperties(VideoMode mode, int imageWidth, int imageHeight, double fov) {
this.mode = mode;
this.imageWidth = imageWidth;
this.imageHeight = imageHeight;
this.fov = fov;

View File

@@ -28,6 +28,11 @@ public class USBCameraCapture implements CameraCapture {
return properties;
}
@Override
public VideoMode getCurrentVideoMode() {
return baseCamera.getVideoMode();
}
@Override
public Pair<Mat, Long> getFrame() {
Long deltaTime;

View File

@@ -69,7 +69,7 @@ public class USBCameraProperties extends CaptureProperties {
public void setFOV(double FOV) {
this.FOV = FOV;
staticProperties = new CaptureStaticProperties(staticProperties.imageWidth, staticProperties.imageHeight, FOV);
staticProperties = new CaptureStaticProperties(staticProperties.mode, staticProperties.imageWidth, staticProperties.imageHeight, FOV);
}
public double getFOV() {
@@ -91,7 +91,7 @@ public class USBCameraProperties extends CaptureProperties {
}
void updateVideoMode(VideoMode videoMode) {
staticProperties = new CaptureStaticProperties(videoMode.width, videoMode.height, FOV);
staticProperties = new CaptureStaticProperties(videoMode, videoMode.width, videoMode.height, FOV);
}
public List<VideoMode> getVideoModes() {

View File

@@ -1,6 +1,7 @@
package com.chameleonvision.vision.image;
import com.chameleonvision.vision.camera.CaptureStaticProperties;
import edu.wpi.cscore.VideoMode;
import org.opencv.core.Mat;
public class CaptureProperties {
@@ -11,7 +12,7 @@ public class CaptureProperties {
}
public CaptureProperties(Mat staticImage, double fov) {
staticProperties = new CaptureStaticProperties(staticImage.cols(), staticImage.rows(), fov);
staticProperties = new CaptureStaticProperties(new VideoMode(0, staticImage.cols(), staticImage.rows(), 99999), staticImage.cols(), staticImage.rows(), fov);
}
public CaptureStaticProperties getStaticProperties() {

View File

@@ -221,7 +221,7 @@ public class SocketHandler {
tmp.put("fov", currentCamera.getProperties().getFOV());
tmp.put("streamDivisor", currentVisionProcess.cameraStreamer.getDivisor().ordinal());
// TODO: (HIGH) get videomode index!
// tmp.put("resolution", currentCamera.getVideoModeIndex());
// tmp.put("resolution", currentCamera.getVideoModeIndex());
return tmp;
}