mirror of
https://github.com/PhotonVision/photonvision
synced 2026-07-01 02:41:42 +00:00
Add AWB slider/toggle (#1477)
Also reworks OV9782 defaults. Probably doesn't work on windows. We should hide these sliders probably. Co-authored-by: Cameron (3539) <theforgelover@gmail.com>
This commit is contained in:
@@ -130,6 +130,25 @@ const interactiveCols = computed(() =>
|
||||
tooltip="Controls blue automatic white balance gain, which affects how the camera captures colors in different conditions"
|
||||
@input="(args) => useCameraSettingsStore().changeCurrentPipelineSetting({ cameraBlueGain: args }, false)"
|
||||
/>
|
||||
|
||||
<pv-switch
|
||||
v-model="useCameraSettingsStore().currentPipelineSettings.cameraAutoWhiteBalance"
|
||||
class="pt-2"
|
||||
label="Auto White Balance"
|
||||
:switch-cols="interactiveCols"
|
||||
tooltip="Enables or Disables camera automatic adjustment for current lighting conditions"
|
||||
@input="(args) => useCameraSettingsStore().changeCurrentPipelineSetting({ cameraAutoWhiteBalance: args }, false)"
|
||||
/>
|
||||
<pv-slider
|
||||
v-if="!useCameraSettingsStore().currentPipelineSettings.cameraAutoWhiteBalance"
|
||||
v-model="useCameraSettingsStore().currentPipelineSettings.cameraWhiteBalanceTemp"
|
||||
label="White Balance Temperature"
|
||||
:min="useCameraSettingsStore().minWhiteBalanceTemp"
|
||||
:max="useCameraSettingsStore().maxWhiteBalanceTemp"
|
||||
:slider-cols="interactiveCols"
|
||||
@input="(args) => useCameraSettingsStore().changeCurrentPipelineSetting({ cameraWhiteBalanceTemp: args }, false)"
|
||||
/>
|
||||
|
||||
<pv-select
|
||||
v-model="useCameraSettingsStore().currentPipelineSettings.inputImageRotationMode"
|
||||
label="Orientation"
|
||||
|
||||
@@ -77,6 +77,12 @@ export const useCameraSettingsStore = defineStore("cameraSettings", {
|
||||
},
|
||||
maxExposureRaw(): number {
|
||||
return this.currentCameraSettings.maxExposureRaw;
|
||||
},
|
||||
minWhiteBalanceTemp(): number {
|
||||
return this.currentCameraSettings.minWhiteBalanceTemp;
|
||||
},
|
||||
maxWhiteBalanceTemp(): number {
|
||||
return this.currentCameraSettings.maxWhiteBalanceTemp;
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
@@ -116,7 +122,9 @@ export const useCameraSettingsStore = defineStore("cameraSettings", {
|
||||
pipelineNicknames: d.pipelineNicknames,
|
||||
currentPipelineIndex: d.currentPipelineIndex,
|
||||
pipelineSettings: d.currentPipelineSettings,
|
||||
cameraQuirks: d.cameraQuirks
|
||||
cameraQuirks: d.cameraQuirks,
|
||||
minWhiteBalanceTemp: d.minWhiteBalanceTemp,
|
||||
maxWhiteBalanceTemp: d.maxWhiteBalanceTemp
|
||||
}));
|
||||
this.cameras = configuredCameras.length > 0 ? configuredCameras : [PlaceholderCameraSettings];
|
||||
},
|
||||
|
||||
@@ -77,6 +77,9 @@ export interface PipelineSettings {
|
||||
hsvSaturation: WebsocketNumberPair | [number, number];
|
||||
pipelineType: PipelineType;
|
||||
contourIntersection: number;
|
||||
|
||||
cameraAutoWhiteBalance: boolean;
|
||||
cameraWhiteBalanceTemp: number;
|
||||
}
|
||||
export type ConfigurablePipelineSettings = Partial<
|
||||
Omit<
|
||||
@@ -137,7 +140,9 @@ export const DefaultPipelineSettings: Omit<
|
||||
cornerDetectionStrategy: 0,
|
||||
cornerDetectionAccuracyPercentage: 10,
|
||||
hsvSaturation: { first: 50, second: 255 },
|
||||
contourIntersection: 1
|
||||
contourIntersection: 1,
|
||||
cameraAutoWhiteBalance: false,
|
||||
cameraWhiteBalanceTemp: 4000
|
||||
};
|
||||
|
||||
export interface ReflectivePipelineSettings extends PipelineSettings {
|
||||
|
||||
@@ -198,6 +198,9 @@ export interface CameraSettings {
|
||||
|
||||
minExposureRaw: number;
|
||||
maxExposureRaw: number;
|
||||
|
||||
minWhiteBalanceTemp: number;
|
||||
maxWhiteBalanceTemp: number;
|
||||
}
|
||||
|
||||
export interface CameraSettingsChangeRequest {
|
||||
@@ -286,20 +289,25 @@ export const PlaceholderCameraSettings: CameraSettings = {
|
||||
quirks: {
|
||||
AWBGain: false,
|
||||
AdjustableFocus: false,
|
||||
ArduOV9281: false,
|
||||
ArduOV2311: false,
|
||||
ArduOV9782: false,
|
||||
ArduOV9281Controls: false,
|
||||
ArduOV2311Controls: false,
|
||||
ArduOV9782Controls: false,
|
||||
ArduCamCamera: false,
|
||||
CompletelyBroken: false,
|
||||
FPSCap100: false,
|
||||
Gain: false,
|
||||
PiCam: false,
|
||||
StickyFPS: false
|
||||
StickyFPS: false,
|
||||
InnoOV9281Controls: false,
|
||||
LifeCamControls: false,
|
||||
PsEyeControls: false
|
||||
}
|
||||
},
|
||||
isCSICamera: false,
|
||||
minExposureRaw: 1,
|
||||
maxExposureRaw: 100
|
||||
maxExposureRaw: 100,
|
||||
minWhiteBalanceTemp: 2000,
|
||||
maxWhiteBalanceTemp: 10000
|
||||
};
|
||||
|
||||
export enum CalibrationBoardTypes {
|
||||
|
||||
@@ -60,6 +60,8 @@ export interface WebsocketCameraSettingsUpdate {
|
||||
cameraQuirks: QuirkyCamera;
|
||||
minExposureRaw: number;
|
||||
maxExposureRaw: number;
|
||||
minWhiteBalanceTemp: number;
|
||||
maxWhiteBalanceTemp: number;
|
||||
}
|
||||
export interface WebsocketNTUpdate {
|
||||
connected: boolean;
|
||||
|
||||
Reference in New Issue
Block a user