Rename USBCamera to USBCameraProcess & abstractify

- Most classes now take a CameraProcess instead of a USBCameraProcess
This commit is contained in:
Matt
2019-11-07 09:10:09 -08:00
parent 338c59e783
commit cc2c065dc8
9 changed files with 27 additions and 21 deletions

View File

@@ -4,6 +4,8 @@ import org.apache.commons.lang3.tuple.Pair;
import org.opencv.core.Mat;
public interface CameraProcess {
CameraProperties getProperties();
Pair<Mat, Long> getFrame(Mat frame);
void setExposure(int exposure);

View File

@@ -8,19 +8,24 @@ import edu.wpi.first.cameraserver.CameraServer;
import org.apache.commons.lang3.tuple.Pair;
import org.opencv.core.Mat;
public class USBCamera implements CameraProcess {
public class USBCameraProcess implements CameraProcess {
private final UsbCamera baseCamera;
public final CameraProperties properties;
private final CvSink cvSink;
private Mat imageBuffer = new Mat();
public final CameraProperties properties;
public USBCamera(UsbCamera camera, double fov) {
public USBCameraProcess(UsbCamera camera, double fov) {
baseCamera = camera;
cvSink = CameraServer.getInstance().getVideo(baseCamera);
VideoMode vidMode = new VideoMode(VideoMode.PixelFormat.kYUYV, 640, 480, 60);
properties = new CameraProperties(baseCamera, fov);
}
@Override
public CameraProperties getProperties() {
return properties;
}
@Override
public Pair<Mat, Long> getFrame(Mat frame) {
var timestamp = System.nanoTime();
@@ -34,7 +39,7 @@ public class USBCamera implements CameraProcess {
try {
baseCamera.setExposureManual(exposure);
} catch (VideoException e) {
System.err.println("USBCamera Does not support exposure change");
System.err.println("USBCameraProcess Does not support exposure change");
}
}
@@ -43,7 +48,7 @@ public class USBCamera implements CameraProcess {
try {
baseCamera.setBrightness(brightness);
} catch (VideoException e) {
System.err.println("USBCamera Does not support brightness change");
System.err.println("USBCameraProcess Does not support brightness change");
}
}
}

View File

@@ -1,6 +1,6 @@
package com.chameleonvision.classabstraction.pipeline;
import com.chameleonvision.classabstraction.camera.USBCamera;
import com.chameleonvision.classabstraction.camera.CameraProcess;
import org.opencv.core.Mat;
/**
@@ -16,6 +16,6 @@ public abstract class CVPipeline<R extends CVPipelineResult, S extends CVPipelin
this.settings = settings;
}
abstract void initPipeline(USBCamera camera);
abstract void initPipeline(CameraProcess camera);
abstract R runPipeline(Mat inputMat);
}

View File

@@ -1,7 +1,7 @@
package com.chameleonvision.classabstraction.pipeline;
import com.chameleonvision.classabstraction.camera.CameraProcess;
import com.chameleonvision.classabstraction.camera.CameraStaticProperties;
import com.chameleonvision.classabstraction.camera.USBCamera;
import com.chameleonvision.classabstraction.pipeline.pipes.*;
import com.chameleonvision.vision.ImageRotation;
import org.apache.commons.lang3.tuple.Pair;
@@ -13,7 +13,7 @@ import java.util.List;
@SuppressWarnings("WeakerAccess")
public class CVPipeline2d extends CVPipeline<CVPipeline2d.CVPipeline2dResult, CVPipeline2d.CVPipeline2dSettings> {
private USBCamera camera;
private CameraProcess cameraProcess;
private Mat rawCameraMat = new Mat();
private Mat hsvOutputMat = new Mat();
@@ -23,8 +23,8 @@ public class CVPipeline2d extends CVPipeline<CVPipeline2d.CVPipeline2dResult, CV
}
@Override
void initPipeline(USBCamera cam) {
camera = cam;
void initPipeline(CameraProcess cam) {
cameraProcess = cam;
}
@Override
@@ -32,7 +32,7 @@ public class CVPipeline2d extends CVPipeline<CVPipeline2d.CVPipeline2dResult, CV
long totalProcessTimeNanos = 0;
StringBuilder procTimeStringBuilder = new StringBuilder();
CameraStaticProperties camProps = camera.properties.staticProperties;
CameraStaticProperties camProps = cameraProcess.getProperties().staticProperties;
inputMat.copyTo(rawCameraMat);

View File

@@ -1,7 +1,6 @@
package com.chameleonvision.classabstraction.pipeline;
import com.chameleonvision.classabstraction.camera.USBCamera;
import com.chameleonvision.vision.process.PipelineResult;
import com.chameleonvision.classabstraction.camera.CameraProcess;
import org.opencv.core.Mat;
public class DriverVisionPipeline extends CVPipeline<DriverVisionPipeline.DriverPipelineResult, CVPipelineSettings> {
@@ -10,7 +9,7 @@ public class DriverVisionPipeline extends CVPipeline<DriverVisionPipeline.Driver
}
@Override
void initPipeline(USBCamera camera) {
void initPipeline(CameraProcess camera) {
// TODO: set camera to driver mode
}