CameraControl

This message is used for controlling the color camera as well as the mono camera. The message handles things like capturing still images, configuring auto focus, anti banding, white balance, scenes, effects etc.

Reference

class depthai.CameraControl
class AntiBandingMode

Members:

OFF

MAINS_50_HZ

MAINS_60_HZ

AUTO

property name
class AutoFocusMode

Members:

OFF

AUTO

MACRO

CONTINUOUS_VIDEO

CONTINUOUS_PICTURE

EDOF

property name
class AutoWhiteBalanceMode

Members:

OFF

AUTO

INCANDESCENT

FLUORESCENT

WARM_FLUORESCENT

DAYLIGHT

CLOUDY_DAYLIGHT

TWILIGHT

SHADE

property name
class CaptureIntent

Members:

CUSTOM

PREVIEW

STILL_CAPTURE

VIDEO_RECORD

VIDEO_SNAPSHOT

ZERO_SHUTTER_LAG

property name
class Command

Members:

START_STREAM

STOP_STREAM

STILL_CAPTURE

MOVE_LENS

AF_TRIGGER

AE_MANUAL

AE_AUTO

AWB_MODE

SCENE_MODE

ANTIBANDING_MODE

EXPOSURE_COMPENSATION

AE_LOCK

AE_TARGET_FPS_RANGE

AWB_LOCK

CAPTURE_INTENT

CONTROL_MODE

FRAME_DURATION

SENSITIVITY

EFFECT_MODE

AF_MODE

NOISE_REDUCTION_STRENGTH

SATURATION

BRIGHTNESS

STREAM_FORMAT

RESOLUTION

SHARPNESS

CUSTOM_USECASE

CUSTOM_CAPT_MODE

CUSTOM_EXP_BRACKETS

CUSTOM_CAPTURE

CONTRAST

AE_REGION

AF_REGION

LUMA_DENOISE

CHROMA_DENOISE

WB_COLOR_TEMP

property name
class ControlMode

Members:

OFF

AUTO

USE_SCENE_MODE

property name
class EffectMode

Members:

OFF

MONO

NEGATIVE

SOLARIZE

SEPIA

POSTERIZE

WHITEBOARD

BLACKBOARD

AQUA

property name
class FrameSyncMode

Members:

OFF

OUTPUT

INPUT

property name
class SceneMode

Members:

UNSUPPORTED

FACE_PRIORITY

ACTION

PORTRAIT

LANDSCAPE

NIGHT

NIGHT_PORTRAIT

THEATRE

BEACH

SNOW

SUNSET

STEADYPHOTO

FIREWORKS

SPORTS

PARTY

CANDLELIGHT

BARCODE

property name
get(self: depthai.CameraControl)depthai.RawCameraControl
getCaptureStill(self: depthai.CameraControl)bool
getData(self: object) → numpy.ndarray[numpy.uint8]
getExposureTime(self: depthai.CameraControl)datetime.timedelta
getLensPosition(self: depthai.CameraControl)int
getLensPositionRaw(self: depthai.CameraControl)float
getRaw(self: depthai.ADatatype)depthai.RawBuffer
getSensitivity(self: depthai.CameraControl)int
getSequenceNum(self: depthai.Buffer)int
getTimestamp(self: depthai.Buffer)datetime.timedelta
getTimestampDevice(self: depthai.Buffer)datetime.timedelta
set(self: depthai.CameraControl, config: depthai.RawCameraControl)depthai.CameraControl
setAntiBandingMode(self: depthai.CameraControl, mode: depthai.RawCameraControl.AntiBandingMode)depthai.CameraControl
setAutoExposureCompensation(self: depthai.CameraControl, compensation: int)depthai.CameraControl
setAutoExposureEnable(self: depthai.CameraControl)depthai.CameraControl
setAutoExposureLimit(*args, **kwargs)

Overloaded function.

  1. setAutoExposureLimit(self: depthai.CameraControl, maxExposureTimeUs: int) -> depthai.CameraControl

  2. setAutoExposureLimit(self: depthai.CameraControl, maxExposureTime: datetime.timedelta) -> depthai.CameraControl

setAutoExposureLock(self: depthai.CameraControl, lock: bool)depthai.CameraControl
setAutoExposureRegion(self: depthai.CameraControl, startX: int, startY: int, width: int, height: int)depthai.CameraControl
setAutoFocusLensRange(self: depthai.CameraControl, infinityPosition: int, macroPosition: int)depthai.CameraControl
setAutoFocusMode(self: depthai.CameraControl, mode: depthai.RawCameraControl.AutoFocusMode)depthai.CameraControl
setAutoFocusRegion(self: depthai.CameraControl, startX: int, startY: int, width: int, height: int)depthai.CameraControl
setAutoFocusTrigger(self: depthai.CameraControl)depthai.CameraControl
setAutoWhiteBalanceLock(self: depthai.CameraControl, lock: bool)depthai.CameraControl
setAutoWhiteBalanceMode(self: depthai.CameraControl, mode: depthai.RawCameraControl.AutoWhiteBalanceMode)depthai.CameraControl
setBrightness(self: depthai.CameraControl, value: int)depthai.CameraControl
setCaptureIntent(self: depthai.CameraControl, mode: depthai.RawCameraControl.CaptureIntent)depthai.CameraControl
setCaptureStill(self: depthai.CameraControl, capture: bool)depthai.CameraControl
setChromaDenoise(self: depthai.CameraControl, value: int)depthai.CameraControl
setContrast(self: depthai.CameraControl, value: int)depthai.CameraControl
setControlMode(self: depthai.CameraControl, mode: depthai.RawCameraControl.ControlMode)depthai.CameraControl
setData(*args, **kwargs)

Overloaded function.

  1. setData(self: depthai.Buffer, arg0: list[int]) -> None

  2. setData(self: depthai.Buffer, arg0: numpy.ndarray[numpy.uint8]) -> None

setEffectMode(self: depthai.CameraControl, mode: depthai.RawCameraControl.EffectMode)depthai.CameraControl
setExternalTrigger(self: depthai.CameraControl, numFramesBurst: int, numFramesDiscard: int)depthai.CameraControl
setFrameSyncMode(self: depthai.CameraControl, mode: depthai.RawCameraControl.FrameSyncMode)depthai.CameraControl
setLumaDenoise(self: depthai.CameraControl, value: int)depthai.CameraControl
setManualExposure(*args, **kwargs)

Overloaded function.

  1. setManualExposure(self: depthai.CameraControl, exposureTimeUs: int, sensitivityIso: int) -> depthai.CameraControl

  2. setManualExposure(self: depthai.CameraControl, exposureTime: datetime.timedelta, sensitivityIso: int) -> depthai.CameraControl

setManualFocus(self: depthai.CameraControl, lensPosition: int)depthai.CameraControl
setManualFocusRaw(self: depthai.CameraControl, lensPositionRaw: float)depthai.CameraControl
setManualWhiteBalance(self: depthai.CameraControl, colorTemperatureK: int)depthai.CameraControl
setSaturation(self: depthai.CameraControl, value: int)depthai.CameraControl
setSceneMode(self: depthai.CameraControl, mode: depthai.RawCameraControl.SceneMode)depthai.CameraControl
setSequenceNum(self: depthai.Buffer, arg0: int)depthai.Buffer
setSharpness(self: depthai.CameraControl, value: int)depthai.CameraControl
setStartStreaming(self: depthai.CameraControl)depthai.CameraControl
setStopStreaming(self: depthai.CameraControl)depthai.CameraControl
setStrobeDisable(self: depthai.CameraControl)depthai.CameraControl
setStrobeExternal(self: depthai.CameraControl, gpioNumber: int, activeLevel: int)depthai.CameraControl
setStrobeSensor(self: depthai.CameraControl, activeLevel: int)depthai.CameraControl
setTimestamp(self: depthai.Buffer, arg0: datetime.timedelta)depthai.Buffer
setTimestampDevice(self: depthai.Buffer, arg0: datetime.timedelta)depthai.Buffer
class dai::CameraControl : public dai::Buffer

CameraControl message. Specifies various camera control commands like:

  • Still capture

  • Auto/manual focus

  • Auto/manual white balance

  • Auto/manual exposure

  • Anti banding

By default the camera enables 3A, with auto-focus in CONTINUOUS_VIDEO mode, auto-white-balance in AUTO mode, and auto-exposure with anti-banding for 50Hz mains frequency.

Public Types

using AutoFocusMode = RawCameraControl::AutoFocusMode
using AntiBandingMode = RawCameraControl::AntiBandingMode
using AutoWhiteBalanceMode = RawCameraControl::AutoWhiteBalanceMode
using SceneMode = RawCameraControl::SceneMode
using EffectMode = RawCameraControl::EffectMode
using ControlMode = RawCameraControl::ControlMode
using CaptureIntent = RawCameraControl::CaptureIntent
using FrameSyncMode = RawCameraControl::FrameSyncMode

Public Functions

CameraControl()

Construct CameraControl message.

CameraControl(std::shared_ptr<RawCameraControl> ptr)
~CameraControl() = default
CameraControl &setCaptureStill(bool capture)

Set a command to capture a still image

CameraControl &setStartStreaming()

Set a command to start streaming

CameraControl &setStopStreaming()

Set a command to stop streaming

CameraControl &setExternalTrigger(int numFramesBurst, int numFramesDiscard)

Set a command to enable external trigger snapshot mode

A rising edge on the sensor FSIN pin will make it capture a sequence of numFramesBurst frames. First numFramesDiscard will be skipped as configured (can be set to 0 as well), as they may have degraded quality

CameraControl &setFrameSyncMode(FrameSyncMode mode)

Set the frame sync mode for continuous streaming operation mode, translating to how the camera pin FSIN/FSYNC is used: input/output/disabled

CameraControl &setStrobeSensor(int activeLevel = 1)

Enable STROBE output on sensor pin, optionally configuring the polarity. Note: for many sensors the polarity is high-active and not configurable

CameraControl &setStrobeExternal(int gpioNumber, int activeLevel = 1)

Enable STROBE output driven by a MyriadX GPIO, optionally configuring the polarity This normally requires a FSIN/FSYNC/trigger input for MyriadX (usually GPIO 41), to generate timings

CameraControl &setStrobeDisable()

Disable STROBE output

CameraControl &setAutoFocusMode(AutoFocusMode mode)

Set a command to specify autofocus mode. Default CONTINUOUS_VIDEO

CameraControl &setAutoFocusTrigger()

Set a command to trigger autofocus

CameraControl &setAutoFocusLensRange(int infinityPosition, int macroPosition)

Set autofocus lens range, infinityPosition < macroPosition, valid values 0..255. May help to improve autofocus in case the lens adjustment is not typical/tuned

CameraControl &setAutoFocusRegion(uint16_t startX, uint16_t startY, uint16_t width, uint16_t height)

Set a command to specify focus region in pixels. Note: the region should be mapped to the configured sensor resolution, before ISP scaling

Parameters
  • startX: X coordinate of top left corner of region

  • startY: Y coordinate of top left corner of region

  • width: Region width

  • height: Region height

CameraControl &setManualFocus(uint8_t lensPosition)

Set a command to specify manual focus position

Parameters
  • lensPosition: specify lens position 0..255

CameraControl &setManualFocusRaw(float lensPositionRaw)

Set a command to specify manual focus position (more precise control).

Return

CameraControl&

Parameters
  • lensPositionRaw: specify lens position 0.0f .. 1.0f

CameraControl &setAutoExposureEnable()

Set a command to enable auto exposure

CameraControl &setAutoExposureLock(bool lock)

Set a command to specify lock auto exposure

Parameters
  • lock: Auto exposure lock mode enabled or disabled

CameraControl &setAutoExposureRegion(uint16_t startX, uint16_t startY, uint16_t width, uint16_t height)

Set a command to specify auto exposure region in pixels. Note: the region should be mapped to the configured sensor resolution, before ISP scaling

Parameters
  • startX: X coordinate of top left corner of region

  • startY: Y coordinate of top left corner of region

  • width: Region width

  • height: Region height

CameraControl &setAutoExposureCompensation(int compensation)

Set a command to specify auto exposure compensation

Parameters
  • compensation: Compensation value between -9..9, default 0

CameraControl &setAutoExposureLimit(uint32_t maxExposureTimeUs)

Set a command to specify the maximum exposure time limit for auto-exposure. By default the AE algorithm prioritizes increasing exposure over ISO, up to around frame-time (subject to further limits imposed by anti-banding)

Parameters
  • maxExposureTimeUs: Maximum exposure time in microseconds

CameraControl &setAutoExposureLimit(std::chrono::microseconds maxExposureTime)

Set a command to specify the maximum exposure time limit for auto-exposure. By default the AE algorithm prioritizes increasing exposure over ISO, up to around frame-time (subject to further limits imposed by anti-banding)

Parameters
  • maxExposureTime: Maximum exposure time

CameraControl &setAntiBandingMode(AntiBandingMode mode)

Set a command to specify anti-banding mode. Anti-banding / anti-flicker works in auto-exposure mode, by controlling the exposure time to be applied in multiples of half the mains period, for example in multiple of 10ms for 50Hz (period 20ms) AC-powered illumination sources.

If the scene would be too bright for the smallest exposure step (10ms in the example, with ISO at a minimum of 100), anti-banding is not effective.

Parameters
  • mode: Anti-banding mode to use. Default: MAINS_50_HZ

CameraControl &setManualExposure(uint32_t exposureTimeUs, uint32_t sensitivityIso)

Set a command to manually specify exposure

Parameters
  • exposureTimeUs: Exposure time in microseconds

  • sensitivityIso: Sensitivity as ISO value, usual range 100..1600

CameraControl &setManualExposure(std::chrono::microseconds exposureTime, uint32_t sensitivityIso)

Set a command to manually specify exposure

Parameters
  • exposureTime: Exposure time

  • sensitivityIso: Sensitivity as ISO value, usual range 100..1600

CameraControl &setAutoWhiteBalanceMode(AutoWhiteBalanceMode mode)

Set a command to specify auto white balance mode

Parameters
  • mode: Auto white balance mode to use. Default AUTO

CameraControl &setAutoWhiteBalanceLock(bool lock)

Set a command to specify auto white balance lock

Parameters
  • lock: Auto white balance lock mode enabled or disabled

CameraControl &setManualWhiteBalance(int colorTemperatureK)

Set a command to manually specify white-balance color correction

Parameters
  • colorTemperatureK: Light source color temperature in kelvins, range 1000..12000

CameraControl &setBrightness(int value)

Set a command to adjust image brightness

Parameters
  • value: Brightness, range -10..10, default 0

CameraControl &setContrast(int value)

Set a command to adjust image contrast

Parameters
  • value: Contrast, range -10..10, default 0

CameraControl &setSaturation(int value)

Set a command to adjust image saturation

Parameters
  • value: Saturation, range -10..10, default 0

CameraControl &setSharpness(int value)

Set a command to adjust image sharpness

Parameters
  • value: Sharpness, range 0..4, default 1

CameraControl &setLumaDenoise(int value)

Set a command to adjust luma denoise amount

Parameters
  • value: Luma denoise amount, range 0..4, default 1

CameraControl &setChromaDenoise(int value)

Set a command to adjust chroma denoise amount

Parameters
  • value: Chroma denoise amount, range 0..4, default 1

CameraControl &setSceneMode(SceneMode mode)

Set a command to specify scene mode

Parameters
  • mode: Scene mode

CameraControl &setEffectMode(EffectMode mode)

Set a command to specify effect mode

Parameters
  • mode: Effect mode

CameraControl &setControlMode(ControlMode mode)

Set a command to specify control mode

Parameters
  • mode: Control mode

CameraControl &setCaptureIntent(CaptureIntent mode)

Set a command to specify capture intent mode

Parameters
  • mode: Capture intent mode

bool getCaptureStill() const

Check whether command to capture a still is set

Return

True if capture still command is set

std::chrono::microseconds getExposureTime() const

Retrieves exposure time

int getSensitivity() const

Retrieves sensitivity, as an ISO value

int getLensPosition() const

Retrieves lens position, range 0..255. Returns -1 if not available

float getLensPositionRaw() const

Retrieves lens position, range 0.0f..1.0f.

CameraControl &set(dai::RawCameraControl config)

Set explicit configuration.

Parameters
  • config: Explicit configuration

dai::RawCameraControl get() const

Retrieve configuration data for CameraControl.

Return

config for CameraControl

Private Functions

std::shared_ptr<RawBuffer> serialize() const override

Private Members

RawCameraControl &cfg

Got questions?

Head over to Discussion Forum for technical support or any other questions you might have.