Class CameraControl
Defined in File CameraControl.hpp
Inheritance Relationships
Base Type
public dai::Buffer(Class Buffer)
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_VIDEOmode, auto-white-balance inAUTOmode, 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.
-
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
numFramesBurstframes. FirstnumFramesDiscardwill 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 values0..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 &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