mirror of
https://github.com/PhotonVision/photonvision
synced 2026-06-20 00:51:41 +00:00
Camera gain (#62)
* Add default QuirkyCamera, make quirks public in USBCameraSource * Add gain send, fix PS3Eye VID/PID * Fix ps3eye test
This commit is contained in:
@@ -22,11 +22,14 @@ import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
public class QuirkyCamera {
|
||||
|
||||
private static final List<QuirkyCamera> quirkyCameras =
|
||||
List.of(
|
||||
new QuirkyCamera(0x1415, 0x2000, "PS3Eye", CameraQuirk.Gain),
|
||||
new QuirkyCamera(0x2000, 0x1415, "PS3Eye", CameraQuirk.Gain),
|
||||
new QuirkyCamera(0x72E, 0x45D, "LifeCam VX-5500", CameraQuirk.DoubleSet));
|
||||
|
||||
public static final QuirkyCamera DefaultCamera = new QuirkyCamera(0, 0, "", List.of());
|
||||
|
||||
public final int usbVid;
|
||||
public final int usbPid;
|
||||
public final String baseName;
|
||||
@@ -50,6 +53,10 @@ public class QuirkyCamera {
|
||||
}
|
||||
}
|
||||
|
||||
public boolean hasQuirk(CameraQuirk quirk) {
|
||||
return quirks.get(quirk);
|
||||
}
|
||||
|
||||
public static QuirkyCamera getQuirkyCamera(int usbVid, int usbPid, String baseName) {
|
||||
for (var qc : quirkyCameras) {
|
||||
if (qc.usbVid == usbVid && qc.usbPid == usbPid) {
|
||||
@@ -59,10 +66,6 @@ public class QuirkyCamera {
|
||||
return new QuirkyCamera(usbVid, usbPid, baseName, List.of());
|
||||
}
|
||||
|
||||
public boolean hasQuirk(CameraQuirk quirk) {
|
||||
return quirks.get(quirk);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
|
||||
@@ -40,7 +40,7 @@ public class USBCameraSource implements VisionSource {
|
||||
public final CameraConfiguration configuration;
|
||||
private final CvSink cvSink;
|
||||
|
||||
private final QuirkyCamera cameraQuirks;
|
||||
public final QuirkyCamera cameraQuirks;
|
||||
|
||||
public USBCameraSource(CameraConfiguration config) {
|
||||
logger = new Logger(USBCameraSource.class, config.nickname, LogGroup.Camera);
|
||||
|
||||
@@ -37,6 +37,9 @@ import org.photonvision.common.util.SerializationUtils;
|
||||
import org.photonvision.common.util.numbers.DoubleCouple;
|
||||
import org.photonvision.common.util.numbers.IntegerCouple;
|
||||
import org.photonvision.server.UIUpdateType;
|
||||
import org.photonvision.vision.camera.CameraQuirk;
|
||||
import org.photonvision.vision.camera.QuirkyCamera;
|
||||
import org.photonvision.vision.camera.USBCameraSource;
|
||||
import org.photonvision.vision.frame.Frame;
|
||||
import org.photonvision.vision.frame.FrameConsumer;
|
||||
import org.photonvision.vision.frame.consumer.MJPGFrameConsumer;
|
||||
@@ -62,6 +65,7 @@ public class VisionModule {
|
||||
private final NTDataPublisher ntConsumer;
|
||||
private final UIDataPublisher uiDataConsumer;
|
||||
private final int moduleIndex;
|
||||
private final QuirkyCamera cameraQuirks;
|
||||
|
||||
private long lastSettingChangeTimestamp = 0;
|
||||
private long lastFrameConsumeMillis;
|
||||
@@ -84,6 +88,13 @@ public class VisionModule {
|
||||
this::consumeResult);
|
||||
this.moduleIndex = index;
|
||||
|
||||
// do this
|
||||
if (visionSource instanceof USBCameraSource) {
|
||||
cameraQuirks = ((USBCameraSource) visionSource).cameraQuirks;
|
||||
} else {
|
||||
cameraQuirks = QuirkyCamera.DefaultCamera;
|
||||
}
|
||||
|
||||
DataChangeService.getInstance().addSubscriber(new VisionSettingChangeSubscriber());
|
||||
|
||||
dashboardOutputStreamer =
|
||||
@@ -250,8 +261,6 @@ public class VisionModule {
|
||||
}
|
||||
|
||||
saveModule();
|
||||
|
||||
VisionModule.this.lastSettingChangeTimestamp = System.currentTimeMillis();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -270,7 +279,13 @@ public class VisionModule {
|
||||
visionSource.getSettables().setCurrentVideoMode(config.cameraVideoModeIndex);
|
||||
visionSource.getSettables().setBrightness(config.cameraBrightness);
|
||||
visionSource.getSettables().setExposure(config.cameraExposure);
|
||||
visionSource.getSettables().setGain(config.cameraGain);
|
||||
|
||||
if (!cameraQuirks.hasQuirk(CameraQuirk.Gain)) {
|
||||
config.cameraGain = -1;
|
||||
} else {
|
||||
visionSource.getSettables().setGain(config.cameraGain);
|
||||
}
|
||||
|
||||
visionSource.getSettables().getConfiguration().currentPipelineIndex =
|
||||
pipelineManager.getCurrentPipelineIndex();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user