Class CameraControl

Inheritance Relationships

Base Type

Class Documentation

class 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.

explicit CameraControl(std::shared_ptr<RawCameraControl> ptr)
virtual ~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).

Parameters:

lensPositionRaw – specify lens position 0.0f .. 1.0f

Returns:

CameraControl&

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

CameraControl &setMisc(std::string control, std::string value)

Set a miscellaneous control. The controls set by this function get appended to a list, processed after the standard controls

Parameters:
  • control – Control name

  • value – Value as a string

CameraControl &setMisc(std::string control, int value)

Set a miscellaneous control. The controls set by this function get appended to a list, processed after the standard controls

Parameters:
  • control – Control name

  • value – Value as an integer number

CameraControl &setMisc(std::string control, float value)

Set a miscellaneous control. The controls set by this function get appended to a list, processed after the standard controls

Parameters:
  • control – Control name

  • value – Value as a floating point number

void clearMiscControls()

Clear the list of miscellaneous controls set by setControl

std::vector<std::pair<std::string, std::string>> getMiscControls()

Get the list of miscellaneous controls set by setControl

Returns:

A list of <key, value> pairs as strings

bool getCaptureStill() const

Check whether command to capture a still is set

Returns:

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.

Returns:

config for CameraControl