C++ API Reference¶
-
namespace
dai
¶ Typedefs
-
using
Clock
= std::chrono::steady_clock¶
Enums
-
enum
CameraBoardSocket
¶ Which Camera socket to use.
AUTO denotes that the decision will be made by device
Values:
-
enumerator
AUTO
¶
-
enumerator
RGB
¶
-
enumerator
LEFT
¶
-
enumerator
RIGHT
¶
-
enumerator
-
enum
CameraImageOrientation
¶ Camera sensor image orientation / pixel readout. This exposes direct sensor settings. 90 or 270 degrees rotation is not available.
AUTO denotes that the decision will be made by device (e.g. on OAK-1/megaAI: ROTATE_180_DEG).
Values:
-
enumerator
AUTO
¶
-
enumerator
NORMAL
¶
-
enumerator
HORIZONTAL_MIRROR
¶
-
enumerator
VERTICAL_FLIP
¶
-
enumerator
ROTATE_180_DEG
¶
-
enumerator
-
enum
CameraModel
¶ Which CameraModel to initialize the calibration with.
Values:
-
enumerator
Perspective
¶
-
enumerator
Fisheye
¶
-
enumerator
Equirectangular
¶
-
enumerator
RadialDivision
¶
-
enumerator
-
enum
ProcessorType
¶ On which processor the node will be placed
Enum specifying processor
Values:
-
enumerator
LEON_CSS
¶
-
enumerator
LEON_MSS
¶
-
enumerator
-
enum
UsbSpeed
¶ Get USB Speed
Values:
-
enumerator
UNKNOWN
¶
-
enumerator
LOW
¶
-
enumerator
FULL
¶
-
enumerator
HIGH
¶
-
enumerator
SUPER
¶
-
enumerator
SUPER_PLUS
¶
-
enumerator
-
enum
DatatypeEnum
¶ Values:
-
enumerator
Buffer
¶
-
enumerator
ImgFrame
¶
-
enumerator
NNData
¶
-
enumerator
ImageManipConfig
¶
-
enumerator
CameraControl
¶
-
enumerator
ImgDetections
¶
-
enumerator
SpatialImgDetections
¶
-
enumerator
SystemInformation
¶
-
enumerator
SpatialLocationCalculatorConfig
¶
-
enumerator
SpatialLocationCalculatorData
¶
-
enumerator
EdgeDetectorConfig
¶
-
enumerator
Tracklets
¶
-
enumerator
IMUData
¶
-
enumerator
StereoDepthConfig
¶
-
enumerator
FeatureTrackerConfig
¶
-
enumerator
TrackedFeatures
¶
-
enumerator
-
enum
SpatialLocationCalculatorAlgorithm
¶ Values:
-
enumerator
AVERAGE
¶
-
enumerator
MIN
¶
-
enumerator
MAX
¶
-
enumerator
-
enum
MedianFilter
¶ Median filter config for disparity post-processing
Values:
-
enumerator
MEDIAN_OFF
¶
-
enumerator
KERNEL_3x3
¶
-
enumerator
KERNEL_5x5
¶
-
enumerator
KERNEL_7x7
¶
-
enumerator
-
enum
LogLevel
¶ Values:
-
enumerator
TRACE
¶
-
enumerator
DEBUG
¶
-
enumerator
INFO
¶
-
enumerator
WARN
¶
-
enumerator
ERR
¶
-
enumerator
CRITICAL
¶
-
enumerator
OFF
¶
-
enumerator
-
enum
IMUSensor
¶ Available IMU sensors. More details about each sensor can be found in the datasheet:
https://www.ceva-dsp.com/wp-content/uploads/2019/10/BNO080_085-Datasheet.pdf
Values:
-
enumerator
ACCELEROMETER_RAW
¶ Section 2.1.1
Acceleration of the device without any postprocessing, straight from the sensor. Units are [m/s^2]
-
enumerator
ACCELEROMETER
¶ Section 2.1.1
Acceleration of the device including gravity. Units are [m/s^2]
-
enumerator
LINEAR_ACCELERATION
¶ Section 2.1.1
Acceleration of the device with gravity removed. Units are [m/s^2]
-
enumerator
GRAVITY
¶ Section 2.1.1
Gravity. Units are [m/s^2]
-
enumerator
GYROSCOPE_RAW
¶ Section 2.1.2
The angular velocity of the device without any postprocessing, straight from the sensor. Units are [rad/s]
-
enumerator
GYROSCOPE_CALIBRATED
¶ Section 2.1.2
The angular velocity of the device. Units are [rad/s]
-
enumerator
GYROSCOPE_UNCALIBRATED
¶ Section 2.1.2
Angular velocity without bias compensation. Units are [rad/s]
-
enumerator
MAGNETOMETER_RAW
¶ Section 2.1.3
Magnetic field measurement without any postprocessing, straight from the sensor. Units are [uTesla]
-
enumerator
MAGNETOMETER_CALIBRATED
¶ Section 2.1.3
The fully calibrated magnetic field measurement. Units are [uTesla]
-
enumerator
MAGNETOMETER_UNCALIBRATED
¶ Section 2.1.3
The magnetic field measurement without hard-iron offset applied. Units are [uTesla]
-
enumerator
ROTATION_VECTOR
¶ Section 2.2
The rotation vector provides an orientation output that is expressed as a quaternion referenced to magnetic north and gravity. It is produced by fusing the outputs of the accelerometer, gyroscope and magnetometer. The rotation vector is the most accurate orientation estimate available. The magnetometer provides correction in yaw to reduce drift and the gyroscope enables the most responsive performance.
-
enumerator
GAME_ROTATION_VECTOR
¶ Section 2.2
The game rotation vector is an orientation output that is expressed as a quaternion with no specific reference for heading, while roll and pitch are referenced against gravity. It is produced by fusing the outputs of the accelerometer and the gyroscope (i.e. no magnetometer). The game rotation vector does not use the magnetometer to correct the gyroscopes drift in yaw. This is a deliberate omission (as specified by Google) to allow gaming applications to use a smoother representation of the orientation without the jumps that an instantaneous correction provided by a magnetic field update could provide. Long term the output will likely drift in yaw due to the characteristics of gyroscopes, but this is seen as preferable for this output versus a corrected output.
-
enumerator
GEOMAGNETIC_ROTATION_VECTOR
¶ Section 2.2
The geomagnetic rotation vector is an orientation output that is expressed as a quaternion referenced to magnetic north and gravity. It is produced by fusing the outputs of the accelerometer and magnetometer. The gyroscope is specifically excluded in order to produce a rotation vector output using less power than is required to produce the rotation vector of section 2.2.4. The consequences of removing the gyroscope are: Less responsive output since the highly dynamic outputs of the gyroscope are not used More errors in the presence of varying magnetic fields.
-
enumerator
ARVR_STABILIZED_ROTATION_VECTOR
¶ Section 2.2
Estimates of the magnetic field and the roll/pitch of the device can create a potential correction in the rotation vector produced. For applications (typically augmented or virtual reality applications) where a sudden jump can be disturbing, the output is adjusted to prevent these jumps in a manner that takes account of the velocity of the sensor system.
-
enumerator
ARVR_STABILIZED_GAME_ROTATION_VECTOR
¶ Section 2.2
While the magnetometer is removed from the calculation of the game rotation vector, the accelerometer itself can create a potential correction in the rotation vector produced (i.e. the estimate of gravity changes). For applications (typically augmented or virtual reality applications) where a sudden jump can be disturbing, the output is adjusted to prevent these jumps in a manner that takes account of the velocity of the sensor system. This process is called AR/VR stabilization.
-
enumerator
-
enum
TrackerType
¶ Values:
-
enumerator
SHORT_TERM_KCF
¶ Kernelized Correlation Filter tracking.
-
enumerator
SHORT_TERM_IMAGELESS
¶ Short term tracking without using image data.
-
enumerator
ZERO_TERM_IMAGELESS
¶ Ability to track the objects without accessing image data.
-
enumerator
ZERO_TERM_COLOR_HISTOGRAM
¶ Tracking using image data too.
-
enumerator
Functions
-
bool
initialize
(std::string additionalInfo = "", bool installSignalHandler = true)¶
-
DEPTHAI_SERIALIZE_EXT
(ChipTemperature, css, mss, upa, dss, average)¶
-
DEPTHAI_SERIALIZE_EXT
(MemoryInfo, remaining, used, total)¶
-
DEPTHAI_SERIALIZE_EXT
(RotatedRect, center, size, angle)¶
-
DEPTHAI_SERIALIZE_EXT
(StereoRectification, rectifiedRotationLeft, rectifiedRotationRight, leftCameraSocket, rightCameraSocket)¶
-
bool
isDatatypeSubclassOf
(DatatypeEnum parent, DatatypeEnum children)¶
-
DEPTHAI_SERIALIZE_EXT
(EdgeDetectorConfigData, sobelFilterHorizontalKernel, sobelFilterVerticalKernel)¶
-
DEPTHAI_SERIALIZE_EXT
(IMUReportAccelerometer, x, y, z, sequence, accuracy, timestamp)¶
-
DEPTHAI_SERIALIZE_EXT
(IMUReportGyroscope, x, y, z, sequence, accuracy, timestamp)¶
-
DEPTHAI_SERIALIZE_EXT
(IMUReportMagneticField, x, y, z, sequence, accuracy, timestamp)¶
-
DEPTHAI_SERIALIZE_EXT
(IMUReportRotationVectorWAcc, i, j, k, real, rotationVectorAccuracy, sequence, accuracy, timestamp)¶
-
DEPTHAI_SERIALIZE_EXT
(ImgDetection, label, confidence, xmin, ymin, xmax, ymax)¶
-
DEPTHAI_SERIALIZE_EXT
(SpatialImgDetection, label, confidence, xmin, ymin, xmax, ymax, spatialCoordinates)¶
-
DEPTHAI_SERIALIZE_EXT
(SpatialLocationCalculatorConfigThresholds, lowerThreshold, upperThreshold)¶
-
DEPTHAI_SERIALIZE_EXT
(SpatialLocationCalculatorConfigData, roi, depthThresholds, calculationAlgorithm)¶
-
DEPTHAI_SERIALIZE_EXT
(SpatialLocations, config, depthAverage, depthMin, depthMax, depthAveragePixelCount, spatialCoordinates)¶
-
DEPTHAI_SERIALIZE_EXT
(TrackedFeature, position, id)¶
-
DEPTHAI_SERIALIZE_EXT
(PrebootConfig::USB, vid, pid, flashBootedVid, flashBootedPid, maxSpeed)¶
-
DEPTHAI_SERIALIZE_EXT
(PrebootConfig, usb, watchdogTimeoutMs, watchdogInitialDelayMs)¶
-
DEPTHAI_SERIALIZE_EXT
(LogMessage, nodeIdName, level, time, colorRangeStart, colorRangeEnd, payload)¶
-
DEPTHAI_SERIALIZE_EXT
(NodeConnectionSchema, node1Id, node1OutputGroup, node1Output, node2Id, node2InputGroup, node2Input)¶
-
DEPTHAI_SERIALIZE_EXT
(NodeIoInfo, group, name, type, blocking, queueSize, waitForMessage)¶
-
DEPTHAI_SERIALIZE_EXT
(NodeObjInfo, id, name, properties, ioInfo)¶
-
DEPTHAI_SERIALIZE_EXT
(PipelineSchema, connections, globalProperties, nodes)¶
-
DEPTHAI_SERIALIZE_EXT
(ColorCameraProperties, initialControl, boardSocket, imageOrientation, colorOrder, interleaved, fp16, previewHeight, previewWidth, videoWidth, videoHeight, stillWidth, stillHeight, resolution, fps, sensorCropX, sensorCropY, previewKeepAspectRatio, ispScale)¶
-
DEPTHAI_SERIALIZE_EXT
(DetectionNetworkProperties, nnFamily, blobSize, blobUri, numFrames, numThreads, numNCEPerThread, confidenceThreshold, classes, coordinates, anchors, anchorMasks, iouThreshold)¶
-
DEPTHAI_SERIALIZE_EXT
(EdgeDetectorProperties, initialConfig, outputFrameSize, numFramesPool)¶
-
DEPTHAI_SERIALIZE_EXT
(FeatureTrackerProperties, initialConfig, numShaves, numMemorySlices)¶
-
DEPTHAI_SERIALIZE_EXT
(GlobalProperties, leonCssFrequencyHz, leonMssFrequencyHz, pipelineName, pipelineVersion, cameraTuningBlobSize, cameraTuningBlobUri, calibData, xlinkChunkSize)¶
-
DEPTHAI_SERIALIZE_EXT
(IMUSensorConfig, sensitivityEnabled, sensitivityRelative, changeSensitivity, reportRate, sensorId)¶
-
DEPTHAI_SERIALIZE_EXT
(IMUProperties, imuSensors, batchReportThreshold, maxBatchReports)¶
-
DEPTHAI_SERIALIZE_EXT
(ImageManipProperties, initialConfig, outputFrameSize, numFramesPool)¶
-
DEPTHAI_SERIALIZE_EXT
(MonoCameraProperties, initialControl, boardSocket, imageOrientation, resolution, fps)¶
-
DEPTHAI_SERIALIZE_EXT
(NeuralNetworkProperties, blobSize, blobUri, numFrames, numThreads, numNCEPerThread)¶
-
DEPTHAI_SERIALIZE_EXT
(ObjectTrackerProperties, trackerThreshold, maxObjectsToTrack, detectionLabelsToTrack, trackerType, trackerIdAssignmentPolicy)¶
-
DEPTHAI_SERIALIZE_EXT
(SPIInProperties, streamName, busId, maxDataSize, numFrames)¶
-
DEPTHAI_SERIALIZE_EXT
(SPIOutProperties, streamName, busId)¶
-
DEPTHAI_SERIALIZE_EXT
(ScriptProperties, scriptUri, scriptName, processor)¶
-
DEPTHAI_SERIALIZE_EXT
(SpatialDetectionNetworkProperties, nnFamily, blobSize, blobUri, numFrames, numThreads, numNCEPerThread, confidenceThreshold, classes, coordinates, anchors, anchorMasks, iouThreshold, detectedBBScaleFactor, depthThresholds, calculationAlgorithm)¶
-
DEPTHAI_SERIALIZE_EXT
(SpatialLocationCalculatorProperties, roiConfig)¶
-
DEPTHAI_SERIALIZE_EXT
(StereoDepthProperties, initialConfig, depthAlignCamera, enableRectification, rectifyEdgeFillColor, width, height, outWidth, outHeight, outKeepAspectRatio, mesh, enableRuntimeStereoModeSwitch, numFramesPool, numPostProcessingShaves, numPostProcessingMemorySlices)¶
-
DEPTHAI_SERIALIZE_EXT
(SystemLoggerProperties, rateHz)¶
-
DEPTHAI_SERIALIZE_EXT
(VideoEncoderProperties, bitrate, keyframeFrequency, maxBitrate, numBFrames, numFramesPool, profile, quality, lossless, rateCtrlMode, frameRate)¶
-
DEPTHAI_SERIALIZE_EXT
(XLinkInProperties, streamName, maxDataSize, numFrames)¶
-
DEPTHAI_SERIALIZE_EXT
(XLinkOutProperties, maxFpsLimit, streamName, metadataOnly)¶
Variables
-
constexpr uint32_t
PREBOOT_CONFIG_MAGIC1
= 0x78010000U¶
-
constexpr uint32_t
PREBOOT_CONFIG_MAGIC2
= 0x21ea17e6U¶
-
constexpr const char *
LOG_DEFAULT_PATTERN
= "[%E.%e] [%n] [%^%l%$] %v"¶
-
class
ADatatype
¶ - #include <ADatatype.hpp>
Abstract message.
Subclassed by dai::Buffer
-
struct
Asset
¶ - #include <AssetManager.hpp>
Asset is identified with string key and can store arbitrary binary data.
-
class
AssetManager
¶ - #include <AssetManager.hpp>
AssetManager can store assets and serialize.
Public Functions
Adds all assets in an array to the AssetManager
- Parameters
assets
: Vector of assets to add
-
std::shared_ptr<dai::Asset>
set
(Asset asset)¶ Adds or overwrites an asset object to AssetManager.
- Return
Shared pointer to asset
- Parameters
asset
: Asset to add
-
std::shared_ptr<dai::Asset>
set
(const std::string &key, Asset asset)¶ Adds or overwrites an asset object to AssetManager with a specificied key. Key value will be assigned to an Asset as well
- Return
Shared pointer to asset
- Parameters
key
: Key under which the asset should be storedasset
: Asset to store
-
std::shared_ptr<dai::Asset>
set
(const std::string &key, const std::string &path, int alignment = 64)¶ Loads file into asset manager under specified key.
- Parameters
key
: Key under which the asset should be storedpath
: Path to file which to load as assetalignment
: [Optional] alignment of asset data in asset storage. Default is 64B
-
std::shared_ptr<dai::Asset>
set
(const std::string &key, const std::vector<std::uint8_t> &data, int alignment = 64)¶ Loads file into asset manager under specified key.
- Return
Shared pointer to asset
- Parameters
key
: Key under which the asset should be storeddata
: Asset dataalignment
: [Optional] alignment of asset data in asset storage. Default is 64B
-
std::shared_ptr<const Asset>
get
(const std::string &key) const¶ - Return
Asset assigned to the specified key or a nullptr otherwise
-
std::shared_ptr<Asset>
get
(const std::string &key)¶ - Return
Asset assigned to the specified key or a nullptr otherwise
-
std::vector<std::shared_ptr<const Asset>>
getAll
() const¶ - Return
All asset stored in the AssetManager
-
std::vector<std::shared_ptr<Asset>>
getAll
()¶ - Return
All asset stored in the AssetManager
-
std::size_t
size
() const¶ - Return
Number of asset stored in the AssetManager
-
void
remove
(const std::string &key)¶ Removes asset with key
- Parameters
key
: Key of asset to remove
-
void
serialize
(AssetsMutable &assets, std::vector<std::uint8_t> &assetStorage, std::string prefix = "") const¶ Serializes.
-
class
Assets
¶ Subclassed by dai::AssetsMutable
-
struct
AssetView
¶
-
class
Buffer
: public dai::ADatatype - #include <Buffer.hpp>
Base message - buffer of binary data.
Subclassed by dai::CameraControl, dai::EdgeDetectorConfig, dai::FeatureTrackerConfig, dai::ImageManipConfig, dai::ImgDetections, dai::ImgFrame, dai::IMUData, dai::NNData, dai::SpatialImgDetections, dai::SpatialLocationCalculatorConfig, dai::SpatialLocationCalculatorData, dai::StereoDepthConfig, dai::SystemInformation, dai::TrackedFeatures, dai::Tracklets
Public Functions
-
Buffer
() Creates Buffer message.
-
std::vector<std::uint8_t> &
getData
() - Return
Reference to internal buffer
-
void
setData
(std::vector<std::uint8_t> data) - Parameters
data
: Copies data to internal buffer
-
-
class
CalibrationHandler
¶ - #include <CalibrationHandler.hpp>
CalibrationHandler is an interface to read/load/write structured calibration and device data.
Public Functions
-
CalibrationHandler
(std::string eepromDataPath)¶ Construct a new Calibration Handler object using the eeprom json file created from calibration procedure.
- Parameters
eepromDataPath
: takes the full path to the json file containing the calibration and device info.
-
CalibrationHandler
(std::string calibrationDataPath, std::string boardConfigPath)¶ Construct a new Calibration Handler object using the board config json file and .calib binary files created using gen1 calibration.
- Parameters
calibrationDataPath
: Full Path to the .calib binary file from the gen1 calibration. (Supports only Version 5)boardConfigPath
: Full Path to the board config json file containing device information.
-
CalibrationHandler
(EepromData eepromData)¶ Construct a new Calibration Handler object from EepromData object.
- Parameters
eepromData
: EepromData data structure containing the calibration data.
-
dai::EepromData
getEepromData
() const¶ Get the Eeprom Data object
- Return
EepromData object which contains the raw calibration data
-
std::vector<std::vector<float>>
getCameraIntrinsics
(CameraBoardSocket cameraId, int resizeWidth = -1, int resizeHeight = -1, Point2f topLeftPixelId = Point2f(), Point2f bottomRightPixelId = Point2f())¶ Get the Camera Intrinsics object
Matrix representation of intrinsic matrix
\[\begin{split} \text{Intrinsic Matrix} = \left [ \begin{matrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{matrix} \right ] \end{split}\]- Return
Repesents the 3x3 intrinsics matrix of the respective camera at the requested size and crop dimensions.
- Parameters
cameraId
: Uses the cameraId to identify which camera intrinsics to returnresizewidth
: resized width of the image for which intrinsics is requested. resizewidth = -1 represents width is same as default intrinsicsresizeHeight
: resized height of the image for which intrinsics is requested. resizeHeight = -1 represents height is same as default intrinsicstopLeftPixelId
: (x, y) point represents the top left corner coordinates of the cropped image which is used to modify the intrinsics for the respective cropped imagebottomRightPixelId
: (x, y) point represents the bottom right corner coordinates of the cropped image which is used to modify the intrinsics for the respective cropped image
-
std::vector<std::vector<float>>
getCameraIntrinsics
(CameraBoardSocket cameraId, Size2f destShape, Point2f topLeftPixelId = Point2f(), Point2f bottomRightPixelId = Point2f())¶ Get the Camera Intrinsics object
Matrix representation of intrinsic matrix
\[\begin{split} \text{Intrinsic Matrix} = \left [ \begin{matrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{matrix} \right ] \end{split}\]- Return
Repesents the 3x3 intrinsics matrix of the respective camera at the requested size and crop dimensions.
- Parameters
cameraId
: Uses the cameraId to identify which camera intrinsics to returndestShape
: resized width and height of the image for which intrinsics is requested.topLeftPixelId
: (x, y) point represents the top left corner coordinates of the cropped image which is used to modify the intrinsics for the respective cropped imagebottomRightPixelId
: (x, y) point represents the bottom right corner coordinates of the cropped image which is used to modify the intrinsics for the respective cropped image
-
std::vector<std::vector<float>>
getCameraIntrinsics
(CameraBoardSocket cameraId, std::tuple<int, int> destShape, Point2f topLeftPixelId = Point2f(), Point2f bottomRightPixelId = Point2f())¶ Get the Camera Intrinsics object
Matrix representation of intrinsic matrix
\[\begin{split} \text{Intrinsic Matrix} = \left [ \begin{matrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{matrix} \right ] \end{split}\]- Return
Repesents the 3x3 intrinsics matrix of the respective camera at the requested size and crop dimensions.
- Parameters
cameraId
: Uses the cameraId to identify which camera intrinsics to returndestShape
: resized width and height of the image for which intrinsics is requested.topLeftPixelId
: (x, y) point represents the top left corner coordinates of the cropped image which is used to modify the intrinsics for the respective cropped imagebottomRightPixelId
: (x, y) point represents the bottom right corner coordinates of the cropped image which is used to modify the intrinsics for the respective cropped image
-
std::tuple<std::vector<std::vector<float>>, int, int>
getDefaultIntrinsics
(CameraBoardSocket cameraId)¶ Get the Default Intrinsics object
Matrix representation of intrinsic matrix
\[\begin{split} \text{Intrinsic Matrix} = \left [ \begin{matrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{matrix} \right ] \end{split}\]- Return
Repesents the 3x3 intrinsics matrix of the respective camera along with width and height at which it was calibrated.
- Parameters
cameraId
: Uses the cameraId to identify which camera intrinsics to return
-
std::vector<float>
getDistortionCoefficients
(CameraBoardSocket cameraId)¶ Get the Distortion Coefficients object
- Return
the distortion coefficients of the requested camera in this order: [k1,k2,p1,p2,k3,k4,k5,k6,s1,s2,s3,s4,τx,τy]
- Parameters
cameraId
: Uses the cameraId to identify which distortion Coefficients to return.
-
float
getFov
(CameraBoardSocket cameraId, bool useSpec = true)¶ Get the Fov of the camera
- Return
field of view of the camera with given cameraId.
- Parameters
cameraId
: of the camera of which we are fetching fov.useSpec
: Disabling this bool will calculate the fov based on intrinsics (focal length, image width), instead of getting it from the camera specs
-
uint8_t
getLensPosition
(CameraBoardSocket cameraId)¶ Get the lens position of the given camera
- Return
lens postion of the camera with given cameraId at which it was calibrated.
- Parameters
cameraId
: of the camera with lens position is requested.
-
std::vector<std::vector<float>>
getCameraExtrinsics
(CameraBoardSocket srcCamera, CameraBoardSocket dstCamera, bool useSpecTranslation = false)¶ Get the Camera Extrinsics object between two cameras from the calibration data if there is a linked connection between any two cameras then the relative rotation and translation (in centimeters) is returned by this function.
Matrix representation of transformation matrix
\[\begin{split} \text{Transformation Matrix} = \left [ \begin{matrix} r_{00} & r_{01} & r_{02} & T_x \\ r_{10} & r_{11} & r_{12} & T_y \\ r_{20} & r_{21} & r_{22} & T_z \\ 0 & 0 & 0 & 1 \end{matrix} \right ] \end{split}\]- Return
a transformationMatrix which is 4x4 in homogenious coordinate system
- Parameters
srcCamera
: Camera Id of the camera which will be considerd as origin.dstCamera
: Camera Id of the destination camera to which we are fetching the rotation and translation from the SrcCamerauseSpecTranslation
: Enabling this bool uses the translation information from the board design data
-
std::vector<float>
getCameraTranslationVector
(CameraBoardSocket srcCamera, CameraBoardSocket dstCamera, bool useSpecTranslation = true)¶ Get the Camera translation vector between two cameras from the calibration data.
- Return
a translation vector like [x, y, z] in centimeters
- Parameters
srcCamera
: Camera Id of the camera which will be considerd as origin.dstCamera
: Camera Id of the destination camera to which we are fetching the translation vector from the SrcCamerauseSpecTranslation
: Disabling this bool uses the translation information from the calibration data (not the board design data)
-
float
getBaselineDistance
(CameraBoardSocket cam1 = CameraBoardSocket::RIGHT, CameraBoardSocket cam2 = CameraBoardSocket::LEFT, bool useSpecTranslation = true)¶ Get the baseline distance between two specified cameras. By default it will get the baseline between CameraBoardSocket.RIGHT and CameraBoardSocket.LEFT.
- Return
baseline distance in centimeters
- Parameters
cam1
: First cameracam2
: Second camerauseSpecTranslation
: Enabling this bool uses the translation information from the board design data (not the calibration data)
-
std::vector<std::vector<float>>
getCameraToImuExtrinsics
(CameraBoardSocket cameraId, bool useSpecTranslation = false)¶ Get the Camera To Imu Extrinsics object From the data loaded if there is a linked connection between IMU and the given camera then there relative rotation and translation from the camera to IMU is returned.
Matrix representation of transformation matrix
\[\begin{split} \text{Transformation Matrix} = \left [ \begin{matrix} r_{00} & r_{01} & r_{02} & T_x \\ r_{10} & r_{11} & r_{12} & T_y \\ r_{20} & r_{21} & r_{22} & T_z \\ 0 & 0 & 0 & 1 \end{matrix} \right ] \end{split}\]- Return
Returns a transformationMatrix which is 4x4 in homogenious coordinate system
- Parameters
cameraId
: Camera Id of the camera which will be considerd as origin. from which Transformation matrix to the IMU will be founduseSpecTranslation
: Enabling this bool uses the translation information from the board design data
-
std::vector<std::vector<float>>
getImuToCameraExtrinsics
(CameraBoardSocket cameraId, bool useSpecTranslation = false)¶ Get the Imu To Camera Extrinsics object from the data loaded if there is a linked connection between IMU and the given camera then there relative rotation and translation from the IMU to Camera is returned.
Matrix representation of transformation matrix
\[\begin{split} \text{Transformation Matrix} = \left [ \begin{matrix} r_{00} & r_{01} & r_{02} & T_x \\ r_{10} & r_{11} & r_{12} & T_y \\ r_{20} & r_{21} & r_{22} & T_z \\ 0 & 0 & 0 & 1 \end{matrix} \right ] \end{split}\]- Return
Returns a transformationMatrix which is 4x4 in homogenious coordinate system
- Parameters
cameraId
: Camera Id of the camera which will be considerd as destination. To which Transformation matrix from the IMU will be found.useSpecTranslation
: Enabling this bool uses the translation information from the board design data
-
std::vector<std::vector<float>>
getStereoRightRectificationRotation
()¶ Get the Stereo Right Rectification Rotation object
- Return
returns a 3x3 rectification rotation matrix
-
std::vector<std::vector<float>>
getStereoLeftRectificationRotation
()¶ Get the Stereo Left Rectification Rotation object
- Return
returns a 3x3 rectification rotation matrix
-
dai::CameraBoardSocket
getStereoLeftCameraId
()¶ Get the camera id of the camera which is used as left camera of the stereo setup
- Return
cameraID of the camera used as left camera
-
dai::CameraBoardSocket
getStereoRightCameraId
()¶ Get the camera id of the camera which is used as right camera of the stereo setup
- Return
cameraID of the camera used as right camera
-
bool
eepromToJsonFile
(std::string destPath) const¶ Write raw calibration/board data to json file.
- Return
True on success, false otherwise
- Parameters
destPath
: Full path to the json file in which raw calibration data will be stored
-
void
setBoardInfo
(std::string boardName, std::string boardRev)¶ Set the Board Info object
- Parameters
version
: Sets the version of the Calibration data(Current version is 6)boardName
: Sets your board name.boardRev
: set your board revision id.
-
void
setCameraIntrinsics
(CameraBoardSocket cameraId, std::vector<std::vector<float>> intrinsics, Size2f frameSize)¶ Set the Camera Intrinsics object
Matrix representation of intrinsic matrix
\[\begin{split} \text{Intrinsic Matrix} = \left [ \begin{matrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{matrix} \right ] \end{split}\]- Parameters
cameraId
: CameraId of the camera for which Camera intrinsics are being loadedintrinsics
: 3x3 intrinsics matrixframeSize
: repesents the width and height of the image at which intrinsics are calculated.
-
void
setCameraIntrinsics
(CameraBoardSocket cameraId, std::vector<std::vector<float>> intrinsics, int width, int height)¶ Set the Camera Intrinsics object
Matrix representation of intrinsic matrix
\[\begin{split} \text{Intrinsic Matrix} = \left [ \begin{matrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{matrix} \right ] \end{split}\]- Parameters
cameraId
: CameraId of the camera for which Camera intrinsics are being loadedintrinsics
: 3x3 intrinsics matrixwidth
: repesents the width of the image at which intrinsics are calculated.height
: repesents the height of the image at which intrinsics are calculated.
-
void
setCameraIntrinsics
(CameraBoardSocket cameraId, std::vector<std::vector<float>> intrinsics, std::tuple<int, int> frameSize)¶ Set the Camera Intrinsics object
Matrix representation of intrinsic matrix
\[\begin{split} \text{Intrinsic Matrix} = \left [ \begin{matrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{matrix} \right ] \end{split}\]- Parameters
cameraId
: CameraId of the camera for which Camera intrinsics are being loadedintrinsics
: 3x3 intrinsics matrixframeSize
: repesents the width and height of the image at which intrinsics are calculated.
-
void
setDistortionCoefficients
(CameraBoardSocket cameraId, std::vector<float> distortionCoefficients)¶ Sets the distortion Coefficients obtained from camera calibration
- Parameters
cameraId
: Camera Id of the camera for which distoriton coefficients are computeddistortionCoefficients
: Distortion Coefficients of the respective Camera.
-
void
setFov
(CameraBoardSocket cameraId, float hfov)¶ Set the Fov of the Camera
- Parameters
cameraId
: Camera Id of the camerahfov
: Horizontal fov of the camera from Camera Datasheet
-
void
setLensPosition
(CameraBoardSocket cameraId, uint8_t lensPosition)¶ Sets the distortion Coefficients obtained from camera calibration
- Parameters
cameraId
: Camera Id of the cameralensPosition
: lens posiotion value of the camera at the time of calibration
-
void
setCameraType
(CameraBoardSocket cameraId, CameraModel cameraModel)¶ Set the Camera Type object
- Parameters
cameraId
: CameraId of the camera for which cameraModel Type is being updated.cameraModel
: Type of the model the camera represents
-
void
setCameraExtrinsics
(CameraBoardSocket srcCameraId, CameraBoardSocket destCameraId, std::vector<std::vector<float>> rotationMatrix, std::vector<float> translation, std::vector<float> specTranslation = {0, 0, 0})¶ Set the Camera Extrinsics object
- Parameters
srcCameraId
: Camera Id of the camera which will be considerd as relative origin.destCameraId
: Camera Id of the camera which will be considerd as destination from srcCameraId.rotationMatrix
: Rotation between srcCameraId and destCameraId origins.translation
: Translation between srcCameraId and destCameraId origins.specTranslation
: Translation between srcCameraId and destCameraId origins from the design.
-
void
setImuExtrinsics
(CameraBoardSocket destCameraId, std::vector<std::vector<float>> rotationMatrix, std::vector<float> translation, std::vector<float> specTranslation = {0, 0, 0})¶ Set the Imu to Camera Extrinsics object
- Parameters
destCameraId
: Camera Id of the camera which will be considerd as destination from IMU.rotationMatrix
: Rotation between srcCameraId and destCameraId origins.translation
: Translation between IMU and destCameraId origins.specTranslation
: Translation between IMU and destCameraId origins from the design.
-
void
setStereoLeft
(CameraBoardSocket cameraId, std::vector<std::vector<float>> rectifiedRotation)¶ Set the Stereo Left Rectification object
Homography of the Left Rectification = Intrinsics_right * rectifiedRotation * inv(Intrinsics_left)
- Parameters
cameraId
: CameraId of the camera which will be used as left Camera of stereo SetuprectifiedRotation
: Rectification rotation of the left camera required for feature matching
-
void
setStereoRight
(CameraBoardSocket cameraId, std::vector<std::vector<float>> rectifiedRotation)¶ Set the Stereo Right Rectification object
Homography of the Right Rectification = Intrinsics_right * rectifiedRotation * inv(Intrinsics_right)
- Parameters
cameraId
: CameraId of the camera which will be used as left Camera of stereo SetuprectifiedRotation
: Rectification rotation of the left camera required for feature matching
-
bool
validateCameraArray
()¶ Using left camera as the head it iterates over the camera extrinsics connection to check if all the camera extrinsics are connected and no loop exists.
- Return
true on proper connection with no loops.
-
-
class
CallbackHandler
¶
-
class
CameraControl
: public dai::Buffer - #include <CameraControl.hpp>
CameraControl message. Specifies various camera control commands like:
Still capture
Auto focus
Anti banding
Auto white balance
Scene
Effect
…
Public Functions
-
CameraControl
() Construct CameraControl message.
-
void
setCaptureStill
(bool capture) Set a command to capture a still image
-
void
setStartStreaming
() Set a command to start streaming
-
void
setStopStreaming
() Set a command to stop streaming
-
void
setAutoFocusMode
(AutoFocusMode mode) Set a command to specify autofocus mode
-
void
setAutoFocusTrigger
() Set a command to trigger autofocus
-
void
setAutoFocusRegion
(uint16_t startX, uint16_t startY, uint16_t width, uint16_t height) Set a command to specify focus region in pixels
- Parameters
startX
: X coordinate of top left corner of regionstartY
: Y coordinate of top left corner of regionwidth
: Region widthheight
: Region height
-
void
setManualFocus
(uint8_t lensPosition) Set a command to specify manual focus position
- Parameters
lensPosition
: specify lens position 0..255
-
void
setAutoExposureEnable
() Set a command to enable auto exposure
-
void
setAutoExposureLock
(bool lock) Set a command to specify lock auto exposure
- Parameters
lock
: Auto exposure lock mode enabled or disabled
-
void
setAutoExposureRegion
(uint16_t startX, uint16_t startY, uint16_t width, uint16_t height) Set a command to specify auto exposure region in pixels
- Parameters
startX
: X coordinate of top left corner of regionstartY
: Y coordinate of top left corner of regionwidth
: Region widthheight
: Region height
-
void
setAutoExposureCompensation
(int compensation) Set a command to specify auto exposure compensation
- Parameters
compensation
: Compensation value between -9..9
-
void
setAntiBandingMode
(AntiBandingMode mode) Set a command to specify auto banding mode
- Parameters
mode
: Auto banding mode to use
-
void
setManualExposure
(uint32_t exposureTimeUs, uint32_t sensitivityIso) Set a command to manually specify exposure
- Parameters
exposureTimeUs
: Exposure time in microsecondssensitivityIso
: Sensitivity as ISO value, usual range 100..1600
-
void
setAutoWhiteBalanceMode
(AutoWhiteBalanceMode mode) Set a command to specify auto white balance mode
- Parameters
mode
: Auto white balance mode to use
-
void
setAutoWhiteBalanceLock
(bool lock) Set a command to specify auto white balance lock
- Parameters
lock
: Auto white balance lock mode enabled or disabled
-
void
setManualWhiteBalance
(int colorTemperatureK) Set a command to manually specify white-balance color correction
- Parameters
colorTemperatureK
: Light source color temperature in kelvins, range 1000..12000
-
void
setBrightness
(int value) Set a command to adjust image brightness
- Parameters
value
: Brightness, range -10..10
-
void
setContrast
(int value) Set a command to adjust image contrast
- Parameters
value
: Contrast, range -10..10
-
void
setSaturation
(int value) Set a command to adjust image saturation
- Parameters
value
: Saturation, range -10..10
-
void
setSharpness
(int value) Set a command to adjust image sharpness
- Parameters
value
: Sharpness, range 0..4
-
void
setLumaDenoise
(int value) Set a command to adjust luma denoise amount
- Parameters
value
: Luma denoise amount, range 0..4
-
void
setChromaDenoise
(int value) Set a command to adjust chroma denoise amount
- Parameters
value
: Chroma denoise amount, range 0..4
-
void
setSceneMode
(SceneMode mode) Set a command to specify scene mode
- Parameters
mode
: Scene mode
-
void
setEffectMode
(EffectMode mode) Set a command to specify effect mode
- Parameters
mode
: Effect mode
-
bool
getCaptureStill
() const Check whether command to capture a still is set
- Return
True if capture still command is set
-
struct
CameraInfo
¶ - #include <CameraInfo.hpp>
CameraInfo structure.
-
struct
ChipTemperature
¶ - #include <ChipTemperature.hpp>
Chip temperature information.
Multiple temperature measurement points and their average
-
struct
ColorCameraProperties
: public dai::PropertiesSerializable<Properties, ColorCameraProperties>¶ - #include <ColorCameraProperties.hpp>
Specify properties for ColorCamera such as camera ID, …
Public Types
Public Members
-
CameraBoardSocket
boardSocket
= CameraBoardSocket::AUTO¶ Which socket will color camera use
-
CameraImageOrientation
imageOrientation
= CameraImageOrientation::AUTO¶ Camera sensor image orientation / pixel readout
-
ColorOrder
colorOrder
= ColorOrder::BGR¶ For 24 bit color these can be either RGB or BGR
-
bool
interleaved
= true¶ Are colors interleaved (R1G1B1, R2G2B2, …) or planar (R1R2…, G1G2…, B1B2)
-
bool
fp16
= false¶ Are values FP16 type (0.0 - 255.0)
-
uint32_t
previewHeight
= 300¶ Preview frame output height
-
uint32_t
previewWidth
= 300¶ Preview frame output width
-
SensorResolution
resolution
= SensorResolution::THE_1080_P¶ Select the camera sensor resolution
-
float
fps
= 30.0¶ Camera sensor FPS
-
bool
previewKeepAspectRatio
= true¶ Whether to keep aspect ratio of input (video size) or not
-
struct
IspScale
¶
-
CameraBoardSocket
-
template<typename
T
>
classcopyable_unique_ptr
: public std::unique_ptr<T>¶ - #include <copyable_unique_ptr.hpp>
A smart pointer with deep copy semantics.
This is similar to
std::unique_ptr
in that it does not permit shared ownership of the contained object. However, unlikestd::unique_ptr
, copyable_unique_ptr supports copy and assignment operations, by insisting that the contained object be “copyable”. To be copyable, the class must have either an accessible copy constructor, or it must have an accessible clone method with signaturewhere Foo is the type of the managed object. By “accessible” we mean either that the copy constructor or clone method is public, orstd::unique_ptr<Foo> Clone() const;
friend copyable_unique_ptr<Foo>;
appears in Foo’s class declaration.Generally, the API is modeled as closely as possible on the C++ standard
std::unique_ptr
API and copyable_unique_ptr<T> is interoperable withunique_ptr<T>
wherever that makes sense. However, there are some differences:It always uses a default deleter.
There is no array version.
To allow for future copy-on-write optimizations, there is a distinction between writable and const access, the get() method is modified to return only a const pointer, with get_mutable() added to return a writable pointer. Furthermore, derefencing (operator*()) a mutable pointer will give a mutable reference (in so far as T is not declared const), and dereferencing a const pointer will give a const reference.
This class is entirely inline and has no computational or space overhead except when copying is required; it contains just a single pointer and does no reference counting.
Usage
In the simplest use case, the instantiation type will match the type of object it references, e.g.:
In this case, as longcopyable_unique_ptr<Foo> ptr = make_unique<Foo>(...);
Foo
is deemed compatible, the behavior will be as expected, i.e., whenptr
copies, it will contain a reference to a new instance ofFoo
.copyable_unique_ptr can also be used with polymorphic classes a copyable_unique_ptr, instantiated on a base class, references an instance of a derived class. When copying the object, we would want the copy to likewise contain an instance of the derived class. For example:
copyable_unique_ptr<Base> cu_ptr = make_unique<Derived>(); copyable_unique_ptr<Base> other_cu_ptr = cu_ptr; // Triggers a copy. is_dynamic_castable<Derived>(other_cu_ptr.get()); // Should be true.
This works for well-designed polymorphic classes.
The
Base
class’s Clone() implementation does not invoke theDerived
class’s implementation of a suitable virtual method.
- Warning
Ill-formed polymorphic classes can lead to fatal type slicing of the referenced object, such that the new copy contains an instance of
Base
instead ofDerived
. Some mistakes that would lead to this degenerate behavior:
- Template Parameters
T
: The type of the contained object, which must be copyable as defined above. May be an abstract or concrete type.
Constructors
-
copyable_unique_ptr
() noexcept¶ Default constructor stores a
nullptr
. No heap allocation is performed. The empty() method will return true when called on a default-constructed copyable_unique_ptr.
-
copyable_unique_ptr
(T *raw) noexcept¶ Given a raw pointer to a writable heap-allocated object, take over ownership of that object. No copying occurs.
-
copyable_unique_ptr
(const T &value)¶ Constructs a unique instance of T as a copy of the provided model value.
-
copyable_unique_ptr
(const copyable_unique_ptr &cu_ptr)¶ Copy constructor is deep; the new copyable_unique_ptr object contains a new copy of the object in the source, created via the source object’s copy constructor or
Clone()
method. If the source container is empty this one will be empty also.
-
template<typename
U
>copyable_unique_ptr
(const std::unique_ptr<U> &u_ptr)¶ Copy constructor from a standard
unique_ptr
of compatible type. The copy is deep; the new copyable_unique_ptr object contains a new copy of the object in the source, created via the source object’s copy constructor orClone()
method. If the source container is empty this one will be empty also.
-
copyable_unique_ptr
(copyable_unique_ptr &&cu_ptr) noexcept¶ Move constructor is very fast and leaves the source empty. Ownership is transferred from the source to the new copyable_unique_ptr. If the source was empty this one will be empty also. No heap activity occurs.
-
copyable_unique_ptr
(std::unique_ptr<T> &&u_ptr) noexcept¶ Move constructor from a standard
unique_ptr
. The move is very fast and leaves the source empty. Ownership is transferred from the source to the new copyable_unique_ptr. If the source was empty this one will be empty also. No heap activity occurs.
-
template<typename
U
>copyable_unique_ptr
(std::unique_ptr<U> &&u_ptr) noexcept¶ Move construction from a compatible standard
unique_ptr
. TypeU*
must be implicitly convertible to typeT*
. Ownership is transferred from the source to the new copyable_unique_ptr. If the source was empty this one will be empty also. No heap activity occurs.
Assignment
-
copyable_unique_ptr &
operator=
(T *raw) noexcept¶ This form of assignment replaces the currently-held object by the given source object and takes over ownership of the source object. The currently-held object (if any) is deleted.
-
copyable_unique_ptr &
operator=
(const T &ref)¶ This form of assignment replaces the currently-held object by a heap-allocated copy of the source object, created using its copy constructor or
Clone()
method. The currently-held object (if any) is deleted.
-
copyable_unique_ptr &
operator=
(const copyable_unique_ptr &cu_ptr)¶ Copy assignment from copyable_unique_ptr replaces the currently-held object by a copy of the object held in the source container, created using the source object’s copy constructor or
Clone()
method. The currently-held object (if any) is deleted. If the source container is empty this one will be empty also after the assignment. Nothing happens if the source and destination are the same container.
-
template<typename
U
>
copyable_unique_ptr &operator=
(const copyable_unique_ptr<U> &cu_ptr)¶ Copy assignment from a compatible copyable_unique_ptr replaces the currently-held object by a copy of the object held in the source container, created using the source object’s copy constructor or
Clone()
method. The currently-held object (if any) is deleted. If the source container is empty this one will be empty also after the assignment. Nothing happens if the source and destination are the same container.
-
copyable_unique_ptr &
operator=
(const std::unique_ptr<T> &src)¶ Copy assignment from a standard
unique_ptr
replaces the currently-held object by a copy of the object held in the source container, created using the source object’s copy constructor orClone()
method. The currently-held object (if any) is deleted. If the source container is empty this one will be empty also after the assignment. Nothing happens if the source and destination are the same container.
-
template<typename
U
>
copyable_unique_ptr &operator=
(const std::unique_ptr<U> &u_ptr)¶ Copy assignment from a compatible standard
unique_ptr
replaces the currently-held object by a copy of the object held in the source container, created using the source object’s copy constructor orClone()
method. The currently-held object (if any) is deleted. If the source container is empty this one will be empty also after the assignment. Nothing happens if the source and destination are the same container.
-
copyable_unique_ptr &
operator=
(copyable_unique_ptr &&cu_ptr) noexcept¶ Move assignment replaces the currently-held object by the source object, leaving the source empty. The currently-held object (if any) is deleted. The instance is not copied. Nothing happens if the source and destination are the same containers.
-
template<typename
U
>
copyable_unique_ptr &operator=
(copyable_unique_ptr<U> &&cu_ptr) noexcept¶ Move assignment replaces the currently-held object by the compatible source object, leaving the source empty. The currently-held object (if any) is deleted. The instance is not copied. Nothing happens if the source and destination are the same containers.
-
copyable_unique_ptr &
operator=
(std::unique_ptr<T> &&u_ptr) noexcept¶ Move assignment replaces the currently-held object by the source object, leaving the source empty. The currently-held object (if any) is deleted. The instance is not copied. Nothing happens if the source and destination are the same containers.
-
template<typename
U
>
copyable_unique_ptr &operator=
(std::unique_ptr<U> &&u_ptr) noexcept¶ Move assignment replaces the currently-held object by the compatible source object, leaving the source empty. The currently-held object (if any) is deleted. The instance is not copied. Nothing happens if the source and destination are the same containers.
Observers
-
bool
empty
() const noexcept¶ Return true if this container is empty, which is the state the container is in immediately after default construction and various other operations.
-
const T *
get
() const noexcept¶ Return a const pointer to the contained object if any, or
nullptr
. Note that this is different thanget()
for the standard smart pointers likestd::unique_ptr
which return a writable pointer. Use get_mutable() here for that purpose.
-
T *
get_mutable
() noexcept¶ Return a writable pointer to the contained object if any, or
nullptr
. Note that you need write access to this container in order to get write access to the object it contains.- Warning
If copyable_unique_ptr is instantiated on a const template parameter (e.g.,
copyable_unique_ptr<const Foo>
), then get_mutable() returns a const pointer.
-
const T &
operator*
() const¶ Return a const reference to the contained object. Note that this is different from
std::unique_ptr::operator*()
which would return a non-const reference (ifT
is non-const), even if the container itself is const. For a const copyable_unique_ptr will always return a const reference to its contained value.- Warning
Currently copyable_unique_ptr is a std::unique_ptr. As such, a const copyable_unique_ptr<Foo> can be upcast to a const unique_ptr<Foo> and the parent’s behavior will provide a mutable reference. This is strongly discouraged and will break as the implementation of this class changes to shore up this gap in the const correctness protection.
- Pre
this != nullptr
reportstrue
.
-
T &
operator*
()¶ Return a writable reference to the contained object (if T is itself not const). Note that you need write access to this container in order to get write access to the object it contains.
We strongly recommend, that, if dereferencing a copyable_unique_ptr without the intention of mutating the underlying value, prefer to dereference a const copyable_unique_ptr (or use *my_ptr.get()) and not a mutable copyable_unique_ptr. As “copy-on-write” behavior is introduced in the future, this recommended practice will prevent unwanted copies of the underlying value.
If copyable_unique_ptr is instantiated on a const template parameter (e.g.,
copyable_unique_ptr<const Foo>
), then operator*() must return a const reference.- Pre
this != nullptr
reportstrue
.
Related
-
template<class
charT
, classtraits
, classT
>
std::basic_ostream<charT, traits> &operator<<
(std::basic_ostream<charT, traits> &os, const copyable_unique_ptr<T> &cu_ptr)¶ Output the system-dependent representation of the pointer contained in a copyable_unique_ptr object. This is equivalent to
os << p.get();
.
-
struct
CpuUsage
¶ - #include <CpuUsage.hpp>
CpuUsage structure
Average usage in percent and time span of the average (since last query)
-
class
DataInputQueue
¶ - #include <DataQueue.hpp>
Access to send messages through XLink stream
Public Functions
-
bool
isClosed
() const¶ Check whether queue is closed
-
void
close
()¶ Closes the queue and the underlying thread
-
void
setMaxDataSize
(std::size_t maxSize)¶ Sets maximum message size. If message is larger than specified, then an exception is issued.
- Parameters
maxSize
: Maximum message size to add to queue
-
std::size_t
getMaxDataSize
()¶ Gets maximum queue size.
- Return
Maximum message size
-
void
setBlocking
(bool blocking)¶ Sets queue behavior when full (maxSize)
- Parameters
blocking
: Specifies if block or overwrite the oldest message in the queue
-
bool
getBlocking
() const¶ Gets current queue behavior when full (maxSize)
- Return
True if blocking, false otherwise
-
void
setMaxSize
(unsigned int maxSize)¶ Sets queue maximum size
- Parameters
maxSize
: Specifies maximum number of messages in the queue
-
unsigned int
getMaxSize
() const¶ Gets queue maximum size
- Return
Maximum queue size
-
std::string
getName
() const¶ Gets queues name
- Return
Queue name
Adds a raw message to the queue, which will be picked up and sent to the device. Can either block if ‘blocking’ behavior is true or overwrite oldest
- Parameters
rawMsg
: Message to add to the queue
Adds a message to the queue, which will be picked up and sent to the device. Can either block if ‘blocking’ behavior is true or overwrite oldest
- Parameters
msg
: Message to add to the queue
-
void
send
(const ADatatype &msg)¶ Adds a message to the queue, which will be picked up and sent to the device. Can either block if ‘blocking’ behavior is true or overwrite oldest
- Parameters
msg
: Message to add to the queue
Adds message to the queue, which will be picked up and sent to the device. Can either block until timeout if ‘blocking’ behavior is true or overwrite oldest
- Parameters
rawMsg
: Message to add to the queuetimeout
: Maximum duration to block in milliseconds
Adds message to the queue, which will be picked up and sent to the device. Can either block until timeout if ‘blocking’ behavior is true or overwrite oldest
- Parameters
msg
: Message to add to the queuetimeout
: Maximum duration to block in milliseconds
-
bool
send
(const ADatatype &msg, std::chrono::milliseconds timeout)¶ Adds message to the queue, which will be picked up and sent to the device. Can either block until timeout if ‘blocking’ behavior is true or overwrite oldest
- Parameters
msg
: Message to add to the queuetimeout
: Maximum duration to block in milliseconds
-
bool
-
class
DataOutputQueue
¶ - #include <DataQueue.hpp>
Access to receive messages coming from XLink stream
Public Types
-
using
CallbackId
= int¶ Alias for callback id.
Public Functions
-
bool
isClosed
() const¶ Check whether queue is closed
-
void
close
()¶ Closes the queue and the underlying thread
-
void
setBlocking
(bool blocking)¶ Sets queue behavior when full (maxSize)
- Parameters
blocking
: Specifies if block or overwrite the oldest message in the queue
-
bool
getBlocking
() const¶ Gets current queue behavior when full (maxSize)
- Return
True if blocking, false otherwise
-
void
setMaxSize
(unsigned int maxSize)¶ Sets queue maximum size
- Parameters
maxSize
: Specifies maximum number of messages in the queue
-
unsigned int
getMaxSize
() const¶ Gets queue maximum size
- Return
Maximum queue size
-
std::string
getName
() const¶ Gets queues name
- Return
Queue name
Adds a callback on message received
- Return
Callback id
- Parameters
callback
: Callback function with queue name and message pointer
Adds a callback on message received
- Return
Callback id
- Parameters
callback
: Callback function with message pointer
-
CallbackId
addCallback
(std::function<void()> callback)¶ Adds a callback on message received
- Return
Callback id
- Parameters
callback
: Callback function without any parameters
-
bool
removeCallback
(CallbackId callbackId)¶ Removes a callback
- Return
True if callback was removed, false otherwise
- Parameters
callbackId
: Id of callback to be removed
-
template<class
T
>
boolhas
()¶ Check whether front of the queue has message of type T
- Return
True if queue isn’t empty and the first element is of type T, false otherwise
-
bool
has
()¶ Check whether front of the queue has a message (isn’t empty)
- Return
True if queue isn’t empty, false otherwise
Try to retrieve message T from queue. If message isn’t of type T it returns nullptr
- Return
Message of type T or nullptr if no message available
-
std::shared_ptr<ADatatype>
tryGet
()¶ Try to retrieve message from queue. If no message available, return immidiately with nullptr
- Return
Message or nullptr if no message available
Block until a message is available.
- Return
Message of type T or nullptr if no message available
-
std::shared_ptr<ADatatype>
get
()¶ Block until a message is available.
- Return
Message or nullptr if no message available
Gets first message in the queue.
- Return
Message of type T or nullptr if no message available
-
std::shared_ptr<ADatatype>
front
()¶ Gets first message in the queue.
- Return
Message or nullptr if no message available
Block until a message is available with a timeout.
- Return
Message of type T otherwise nullptr if message isn’t type T or timeout occured
- Parameters
timeout
: Duration for which the function should block[out] hasTimedout
: Outputs true if timeout occured, false otherwise
Block until a message is available with a timeout.
- Return
Message of type T otherwise nullptr if message isn’t type T or timeout occured
- Parameters
timeout
: Duration for which the function should block[out] hasTimedout
: Outputs true if timeout occured, false otherwise
Try to retrieve all messages in the queue.
- Return
Vector of messages which can either be of type T or nullptr
-
std::vector<std::shared_ptr<ADatatype>>
tryGetAll
()¶ Try to retrieve all messages in the queue.
- Return
Vector of messages
Block until at least one message in the queue. Then return all messages from the queue.
- Return
Vector of messages which can either be of type T or nullptr
-
std::vector<std::shared_ptr<ADatatype>>
getAll
()¶ Block until at least one message in the queue. Then return all messages from the queue.
- Return
Vector of messages
Block for maximum timeout duration. Then return all messages from the queue.
- Return
Vector of messages which can either be of type T or nullptr
- Parameters
timeout
: Maximum duration to block[out] hasTimedout
: Outputs true if timeout occured, false otherwise
Block for maximum timeout duration. Then return all messages from the queue.
- Return
Vector of messages
- Parameters
timeout
: Maximum duration to block[out] hasTimedout
: Outputs true if timeout occured, false otherwise
-
using
-
struct
DetectionNetworkProperties
: public dai::PropertiesSerializable<NeuralNetworkProperties, DetectionNetworkProperties>¶ - #include <DetectionNetworkProperties.hpp>
Specify properties for DetectionNetwork
Subclassed by dai::PropertiesSerializable< DetectionNetworkProperties, SpatialDetectionNetworkProperties >
-
class
Device
: public dai::DeviceBase - #include <Device.hpp>
Represents the DepthAI device with the methods to interact with it. Implements the host-side queues to connect with XLinkIn and XLinkOut nodes
Public Functions
-
Device
(const Pipeline &pipeline) Connects to any available device with a DEFAULT_SEARCH_TIME timeout.
- Parameters
pipeline
: Pipeline to be executed on the device
-
Device
(const Pipeline &pipeline, bool usb2Mode) Connects to any available device with a DEFAULT_SEARCH_TIME timeout.
- Parameters
pipeline
: Pipeline to be executed on the deviceusb2Mode
: Boot device using USB2 mode firmware
-
Device
(const Pipeline &pipeline, UsbSpeed maxUsbSpeed) Connects to any available device with a DEFAULT_SEARCH_TIME timeout.
- Parameters
pipeline
: Pipeline to be executed on the devicemaxUsbSpeed
: Maximum allowed USB speed
-
Device
(const Pipeline &pipeline, const char *pathToCmd) Connects to any available device with a DEFAULT_SEARCH_TIME timeout.
- Parameters
pipeline
: Pipeline to be executed on the devicepathToCmd
: Path to custom device firmware
-
Device
(const Pipeline &pipeline, const std::string &pathToCmd) Connects to any available device with a DEFAULT_SEARCH_TIME timeout.
- Parameters
pipeline
: Pipeline to be executed on the devicepathToCmd
: Path to custom device firmware
-
Device
(const Pipeline &pipeline, const DeviceInfo &devInfo) Connects to device specified by devInfo.
- Parameters
pipeline
: Pipeline to be executed on the devicedevInfo
: DeviceInfo which specifies which device to connect to
-
Device
(const Pipeline &pipeline, const DeviceInfo &devInfo, bool usb2Mode) Connects to device specified by devInfo.
- Parameters
pipeline
: Pipeline to be executed on the devicedevInfo
: DeviceInfo which specifies which device to connect tousb2Mode
: Boot device using USB2 mode firmware
-
Device
(const Pipeline &pipeline, const DeviceInfo &devInfo, UsbSpeed maxUsbSpeed) Connects to device specified by devInfo.
- Parameters
pipeline
: Pipeline to be executed on the devicedevInfo
: DeviceInfo which specifies which device to connect tomaxUsbSpeed
: Maximum allowed USB speed
-
Device
(const Pipeline &pipeline, const DeviceInfo &devInfo, const char *pathToCmd) Connects to device specified by devInfo.
- Parameters
pipeline
: Pipeline to be executed on the devicedevInfo
: DeviceInfo which specifies which device to connect topathToCmd
: Path to custom device firmware
-
Device
(const Pipeline &pipeline, const DeviceInfo &devInfo, const std::string &pathToCmd) Connects to device specified by devInfo.
- Parameters
pipeline
: Pipeline to be executed on the devicedevInfo
: DeviceInfo which specifies which device to connect topathToCmd
: Path to custom device firmware
-
Device
() Connects to any available device with a DEFAULT_SEARCH_TIME timeout. Uses OpenVINO version Pipeline::DEFAULT_OPENVINO_VERSION
-
~Device
() override dtor to close the device
-
std::shared_ptr<DataOutputQueue>
getOutputQueue
(const std::string &name) Gets an output queue corresponding to stream name. If it doesn’t exist it throws
- Return
Smart pointer to DataOutputQueue
- Parameters
name
: Queue/stream name, created by XLinkOut node
-
std::shared_ptr<DataOutputQueue>
getOutputQueue
(const std::string &name, unsigned int maxSize, bool blocking = true) Gets a queue corresponding to stream name, if it exists, otherwise it throws. Also sets queue options
- Return
Smart pointer to DataOutputQueue
- Parameters
name
: Queue/stream name, set in XLinkOut nodemaxSize
: Maximum number of messages in queueblocking
: Queue behavior once full. True specifies blocking and false overwriting of oldest messages. Default: true
-
std::vector<std::string>
getOutputQueueNames
() const Get all available output queue names
- Return
Vector of output queue names
-
std::shared_ptr<DataInputQueue>
getInputQueue
(const std::string &name) Gets an input queue corresponding to stream name. If it doesn’t exist it throws
- Return
Smart pointer to DataInputQueue
- Parameters
name
: Queue/stream name, set in XLinkIn node
-
std::shared_ptr<DataInputQueue>
getInputQueue
(const std::string &name, unsigned int maxSize, bool blocking = true) Gets an input queue corresponding to stream name. If it doesn’t exist it throws. Also sets queue options
- Return
Smart pointer to DataInputQueue
- Parameters
name
: Queue/stream name, set in XLinkOut nodemaxSize
: Maximum number of messages in queueblocking
: Queue behavior once full. True: blocking, false: overwriting of oldest messages. Default: true
-
std::vector<std::string>
getInputQueueNames
() const Get all available input queue names
- Return
Vector of input queue names
-
std::vector<std::string>
getQueueEvents
(const std::vector<std::string> &queueNames, std::size_t maxNumEvents = std::numeric_limits<std::size_t>::max(), std::chrono::microseconds timeout = std::chrono::microseconds(-1)) Gets or waits until any of specified queues has received a message
- Return
Names of queues which received messages first
- Parameters
queueNames
: Names of queues for which to blockmaxNumEvents
: Maximum number of events to remove from queue - Default is unlimitedtimeout
: Timeout after which return regardless. If negative then wait is indefinite - Default is -1
-
std::vector<std::string>
getQueueEvents
(std::string queueName, std::size_t maxNumEvents = std::numeric_limits<std::size_t>::max(), std::chrono::microseconds timeout = std::chrono::microseconds(-1)) Gets or waits until specified queue has received a message
- Return
Names of queues which received messages first
- Parameters
queueName
: Name of queues for which to wait formaxNumEvents
: Maximum number of events to remove from queue. Default is unlimitedtimeout
: Timeout after which return regardless. If negative then wait is indefinite. Default is -1
-
std::vector<std::string>
getQueueEvents
(std::size_t maxNumEvents = std::numeric_limits<std::size_t>::max(), std::chrono::microseconds timeout = std::chrono::microseconds(-1)) Gets or waits until any queue has received a message
- Return
Names of queues which received messages first
- Parameters
maxNumEvents
: Maximum number of events to remove from queue. Default is unlimitedtimeout
: Timeout after which return regardless. If negative then wait is indefinite. Default is -1
-
std::string
getQueueEvent
(const std::vector<std::string> &queueNames, std::chrono::microseconds timeout = std::chrono::microseconds(-1)) Gets or waits until any of specified queues has received a message
- Return
Queue name which received a message first
- Parameters
queueNames
: Names of queues for which to wait fortimeout
: Timeout after which return regardless. If negative then wait is indefinite. Default is -1
-
std::string
getQueueEvent
(std::string queueName, std::chrono::microseconds timeout = std::chrono::microseconds(-1)) Gets or waits until specified queue has received a message
- Return
Queue name which received a message
- Parameters
queueNames
: Name of queues for which to wait fortimeout
: Timeout after which return regardless. If negative then wait is indefinite. Default is -1
-
std::string
getQueueEvent
(std::chrono::microseconds timeout = std::chrono::microseconds(-1)) Gets or waits until any queue has received a message
- Return
Queue name which received a message
- Parameters
timeout
: Timeout after which return regardless. If negative then wait is indefinite. Default is -1
Public Static Attributes
-
constexpr std::size_t
EVENT_QUEUE_MAXIMUM_SIZE
= {2048} Maximum number of elements in event queue.
-
-
class
DeviceBase
¶ - #include <DeviceBase.hpp>
The core of depthai device for RAII, connects to device and maintains watchdog, timesync, …
Subclassed by dai::Device
Public Functions
-
DeviceBase
(const Pipeline &pipeline)¶ Connects to any available device with a DEFAULT_SEARCH_TIME timeout.
- Parameters
pipeline
: Pipeline to be executed on the device
-
DeviceBase
(const Pipeline &pipeline, bool usb2Mode)¶ Connects to any available device with a DEFAULT_SEARCH_TIME timeout.
- Parameters
pipeline
: Pipeline to be executed on the deviceusb2Mode
: Boot device using USB2 mode firmware
-
DeviceBase
(const Pipeline &pipeline, UsbSpeed maxUsbSpeed)¶ Connects to any available device with a DEFAULT_SEARCH_TIME timeout.
- Parameters
pipeline
: Pipeline to be executed on the devicemaxUsbSpeed
: Maximum allowed USB speed
-
DeviceBase
(const Pipeline &pipeline, const char *pathToCmd)¶ Connects to any available device with a DEFAULT_SEARCH_TIME timeout.
- Parameters
pipeline
: Pipeline to be executed on the devicepathToCmd
: Path to custom device firmware
-
DeviceBase
(const Pipeline &pipeline, const std::string &pathToCmd)¶ Connects to any available device with a DEFAULT_SEARCH_TIME timeout.
- Parameters
pipeline
: Pipeline to be executed on the devicepathToCmd
: Path to custom device firmware
-
DeviceBase
(const Pipeline &pipeline, const DeviceInfo &devInfo)¶ Connects to device specified by devInfo.
- Parameters
pipeline
: Pipeline to be executed on the devicedevInfo
: DeviceInfo which specifies which device to connect to
-
DeviceBase
(const Pipeline &pipeline, const DeviceInfo &devInfo, bool usb2Mode)¶ Connects to device specified by devInfo.
- Parameters
pipeline
: Pipeline to be executed on the devicedevInfo
: DeviceInfo which specifies which device to connect tousb2Mode
: Boot device using USB2 mode firmware
-
DeviceBase
(const Pipeline &pipeline, const DeviceInfo &devInfo, UsbSpeed maxUsbSpeed)¶ Connects to device specified by devInfo.
- Parameters
pipeline
: Pipeline to be executed on the devicedevInfo
: DeviceInfo which specifies which device to connect tomaxUsbSpeed
: Maximum allowed USB speed
-
DeviceBase
(const Pipeline &pipeline, const DeviceInfo &devInfo, const char *pathToCmd)¶ Connects to device specified by devInfo.
- Parameters
pipeline
: Pipeline to be executed on the devicedevInfo
: DeviceInfo which specifies which device to connect topathToCmd
: Path to custom device firmware
-
DeviceBase
(const Pipeline &pipeline, const DeviceInfo &devInfo, const std::string &pathToCmd)¶ Connects to device specified by devInfo.
- Parameters
pipeline
: Pipeline to be executed on the devicedevInfo
: DeviceInfo which specifies which device to connect topathToCmd
: Path to custom device firmware
-
DeviceBase
()¶ Connects to any available device with a DEFAULT_SEARCH_TIME timeout. Uses OpenVINO version Pipeline::DEFAULT_OPENVINO_VERSION
-
DeviceBase
(OpenVINO::Version version)¶ Connects to any available device with a DEFAULT_SEARCH_TIME timeout.
- Parameters
version
: OpenVINO version which the device will be booted with.
-
DeviceBase
(OpenVINO::Version version, bool usb2Mode)¶ Connects to any available device with a DEFAULT_SEARCH_TIME timeout.
- Parameters
version
: OpenVINO version which the device will be booted withusb2Mode
: Boot device using USB2 mode firmware
-
DeviceBase
(OpenVINO::Version version, UsbSpeed maxUsbSpeed)¶ Connects to device specified by devInfo.
- Parameters
version
: OpenVINO version which the device will be booted withdevInfo
: DeviceInfo which specifies which device to connect tomaxUsbSpeed
: Maximum allowed USB speed
-
DeviceBase
(OpenVINO::Version version, const char *pathToCmd)¶ Connects to any available device with a DEFAULT_SEARCH_TIME timeout.
- Parameters
version
: OpenVINO version which the device will be booted withpathToCmd
: Path to custom device firmware
-
DeviceBase
(OpenVINO::Version version, const std::string &pathToCmd)¶ Connects to any available device with a DEFAULT_SEARCH_TIME timeout.
- Parameters
version
: OpenVINO version which the device will be booted withpathToCmd
: Path to custom device firmware
-
DeviceBase
(OpenVINO::Version version, const DeviceInfo &devInfo)¶ Connects to device specified by devInfo.
- Parameters
version
: OpenVINO version which the device will be booted withdevInfo
: DeviceInfo which specifies which device to connect to
-
DeviceBase
(OpenVINO::Version version, const DeviceInfo &devInfo, bool usb2Mode)¶ Connects to device specified by devInfo.
- Parameters
version
: OpenVINO version which the device will be booted withdevInfo
: DeviceInfo which specifies which device to connect tousb2Mode
: Boot device using USB2 mode firmware
-
DeviceBase
(OpenVINO::Version version, const DeviceInfo &devInfo, UsbSpeed maxUsbSpeed)¶ Connects to device specified by devInfo.
- Parameters
version
: OpenVINO version which the device will be booted withdevInfo
: DeviceInfo which specifies which device to connect tomaxUsbSpeed
: Maximum allowed USB speed
-
DeviceBase
(OpenVINO::Version version, const DeviceInfo &devInfo, const char *pathToCmd)¶ Connects to device specified by devInfo.
- Parameters
version
: OpenVINO version which the device will be booted withdevInfo
: DeviceInfo which specifies which device to connect topathToCmd
: Path to custom device firmware
-
DeviceBase
(OpenVINO::Version version, const DeviceInfo &devInfo, const std::string &pathToCmd)¶ Connects to device specified by devInfo.
- Parameters
version
: OpenVINO version which the device will be booted withdevInfo
: DeviceInfo which specifies which device to connect tousb2Mode
: Path to custom device firmware
-
DeviceBase
(Config config)¶ Connects to any available device with custom config.
- Parameters
config
: Device custom configuration to boot with
-
DeviceBase
(Config config, const DeviceInfo &devInfo)¶ Connects to device ‘devInfo’ with custom config.
- Parameters
devInfo
: DeviceInfo which specifies which device to connect toconfig
: Device custom configuration to boot with
-
~DeviceBase
()¶ Device destructor
- Note
In the destructor of the derived class, remember to call close()
-
bool
isPipelineRunning
()¶ Checks if devices pipeline is already running
- Return
True if running, false otherwise
-
bool
startPipeline
()¶ Starts the execution of the devices pipeline
- Return
True if pipeline started, false otherwise
-
bool
startPipeline
(const Pipeline &pipeline)¶ Starts the execution of a given pipeline
- Return
True if pipeline started, false otherwise
- Parameters
pipeline
: OpenVINO version of the pipeline must match the one which the device was booted with.
-
void
setLogLevel
(LogLevel level)¶ Sets the devices logging severity level. This level affects which logs are transferred from device to host.
- Parameters
level
: Logging severity
-
LogLevel
getLogLevel
()¶ Gets current logging severity level of the device.
- Return
Logging severity level
-
void
setXLinkChunkSize
(int sizeBytes)¶ Sets the chunk size for splitting device-sent XLink packets. A larger value could increase performance, and 0 disables chunking. A negative value is ignored. Device defaults are configured per protocol, currently 64*1024 for both USB and Ethernet.
- Parameters
sizeBytes
: XLink chunk size in bytes
-
int
getXLinkChunkSize
()¶ Gets current XLink chunk size.
- Return
XLink chunk size in bytes
-
DeviceInfo
getDeviceInfo
() const¶ Get the Device Info object o the device which is currently running
- Return
DeviceInfo of the current device in execution
-
std::string
getMxId
()¶ Get MxId of device
- Return
MxId of connected device
-
void
setLogOutputLevel
(LogLevel level)¶ Sets logging level which decides printing level to standard output. If lower than setLogLevel, no messages will be printed
- Parameters
level
: Standard output printing severity
-
LogLevel
getLogOutputLevel
()¶ Gets logging level which decides printing level to standard output.
- Return
Standard output printing severity
-
int
addLogCallback
(std::function<void(LogMessage)> callback)¶ Add a callback for device logging. The callback will be called from a separate thread with the LogMessage being passed.
- Return
Id which can be used to later remove the callback
- Parameters
callback
: Callback to call whenever a log message arrives
-
bool
removeLogCallback
(int callbackId)¶ Removes a callback
- Return
True if callback was removed, false otherwise
- Parameters
callbackId
: Id of callback to be removed
-
void
setSystemInformationLoggingRate
(float rateHz)¶ Sets rate of system information logging (“info” severity). Default 1Hz If parameter is less or equal to zero, then system information logging will be disabled
- Parameters
rateHz
: Logging rate in Hz
-
float
getSystemInformationLoggingRate
()¶ Gets current rate of system information logging (“info” severity) in Hz.
- Return
Logging rate in Hz
-
std::vector<CameraBoardSocket>
getConnectedCameras
()¶ Get cameras that are connected to the device
- Return
Vector of connected cameras
-
std::unordered_map<CameraBoardSocket, std::string>
getCameraSensorNames
()¶ Get sensor names for cameras that are connected to the device
- Return
Map/dictionary with camera sensor names, indexed by socket
-
MemoryInfo
getDdrMemoryUsage
()¶ Retrieves current DDR memory information from device
- Return
Used, remaining and total ddr memory
-
MemoryInfo
getCmxMemoryUsage
()¶ Retrieves current CMX memory information from device
- Return
Used, remaining and total cmx memory
-
MemoryInfo
getLeonCssHeapUsage
()¶ Retrieves current CSS Leon CPU heap information from device
- Return
Used, remaining and total heap memory
-
MemoryInfo
getLeonMssHeapUsage
()¶ Retrieves current MSS Leon CPU heap information from device
- Return
Used, remaining and total heap memory
-
ChipTemperature
getChipTemperature
()¶ Retrieves current chip temperature as measured by device
- Return
Temperature of various onboard sensors
-
CpuUsage
getLeonCssCpuUsage
()¶ Retrieves average CSS Leon CPU usage
- Return
Average CPU usage and sampling duration
-
CpuUsage
getLeonMssCpuUsage
()¶ Retrieves average MSS Leon CPU usage
- Return
Average CPU usage and sampling duration
-
bool
flashCalibration
(CalibrationHandler calibrationDataHandler)¶ Stores the Calibration and Device information to the Device EEPROM
- Return
true on successful flash, false on failure
- Parameters
calibrationObj
: CalibrationHandler object which is loaded with calibration information.
-
CalibrationHandler
readCalibration
()¶ Fetches the EEPROM data from the device and loads it into CalibrationHandler object
- Return
The CalibrationHandler object containing the calibration currently flashed on device EEPROM
-
UsbSpeed
getUsbSpeed
()¶ Retrieves USB connection speed
- Return
USB connection speed of connected device if applicable. Unknown otherwise.
-
void
close
()¶ Explicitly closes connection to device.
- Note
This function does not need to be explicitly called as destructor closes the device automatically
-
bool
isClosed
() const¶ Is the device already closed (or disconnected)
-
std::shared_ptr<XLinkConnection>
getConnection
()¶ Returns underlying XLinkConnection
-
std::shared_ptr<const XLinkConnection>
getConnection
() const¶ Returns underlying XLinkConnection
Public Static Functions
-
template<typename
Rep
, typenamePeriod
>
std::tuple<bool, DeviceInfo>getAnyAvailableDevice
(std::chrono::duration<Rep, Period> timeout)¶ Waits for any available device with a timeout
- Return
Tuple of bool and DeviceInfo. Bool specifies if device was found. DeviceInfo specifies the found device
- Parameters
timeout
: duration of time to wait for the any device
-
std::tuple<bool, DeviceInfo>
getAnyAvailableDevice
()¶ Gets any available device
- Return
Tuple of bool and DeviceInfo. Bool specifies if device was found. DeviceInfo specifies the found device
-
std::tuple<bool, DeviceInfo>
getFirstAvailableDevice
()¶ Gets first available device. Device can be either in XLINK_UNBOOTED or XLINK_BOOTLOADER state
- Return
Tuple of bool and DeviceInfo. Bool specifies if device was found. DeviceInfo specifies the found device
-
std::tuple<bool, DeviceInfo>
getDeviceByMxId
(std::string mxId)¶ Finds a device by MX ID. Example: 14442C10D13EABCE00
- Return
Tuple of bool and DeviceInfo. Bool specifies if device was found. DeviceInfo specifies the found device
- Parameters
mxId
: MyraidX ID which uniquely specifies a device
-
std::vector<DeviceInfo>
getAllAvailableDevices
()¶ Returns all connected devices
- Return
Vector of connected devices
-
-
class
DeviceBootloader
¶ - #include <DeviceBootloader.hpp>
Represents the DepthAI bootloader with the methods to interact with it.
Public Functions
-
DeviceBootloader
(const DeviceInfo &devInfo, bool allowFlashingBootloader = false)¶ Connects to or boots device in bootloader mode depending on devInfo state.
- Parameters
devInfo
: DeviceInfo of which to boot or connect toallowFlashingBootloader
: Set to true to allow flashing the devices bootloader. Defaults to false
-
DeviceBootloader
(const DeviceInfo &devInfo, Type type, bool allowFlashingBootloader = false)¶ Connects to device in bootloader of specified type. Throws if it wasn’t possible. This constructor will automatically boot into specified bootloader type if not already running
- Parameters
devInfo
: DeviceInfo of which to boot or connect totype
: Type of bootloader to boot/connect to.allowFlashingBootloader
: Set to true to allow flashing the devices bootloader. Defaults to false
-
DeviceBootloader
(const DeviceInfo &devInfo, const std::string &pathToBootloader, bool allowFlashingBootloader = false)¶ Connects to or boots device in bootloader mode depending on devInfo state with a custom bootloader firmware.
- Parameters
devInfo
: DeviceInfo of which to boot or connect topathToBootloader
: Custom bootloader firmware to bootallowFlashingBootloader
: Set to true to allow flashing the devices bootloader. Defaults to false
-
DeviceBootloader
(const DeviceInfo &devInfo, const char *pathToBootloader, bool allowFlashingBootloader = false)¶ This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
-
std::tuple<bool, std::string>
flash
(std::function<void(float)> progressCallback, const Pipeline &pipeline, bool compress = false, )¶ Flashes a given pipeline to the device.
- Parameters
progressCallback
: Callback that sends back a value between 0..1 which signifies current flashing progresspipeline
: Pipeline to flash to the board
-
std::tuple<bool, std::string>
flash
(const Pipeline &pipeline, bool compress = false)¶ Flashes a given pipeline to the device.
- Parameters
pipeline
: Pipeline to flash to the board
-
std::tuple<bool, std::string>
flashDepthaiApplicationPackage
(std::function<void(float)> progressCallback, std::vector<uint8_t> package, )¶ Flashes a specific depthai application package that was generated using createDepthaiApplicationPackage or saveDepthaiApplicationPackage
- Parameters
progressCallback
: Callback that sends back a value between 0..1 which signifies current flashing progresspackage
: Depthai application package to flash to the board
-
std::tuple<bool, std::string>
flashDepthaiApplicationPackage
(std::vector<uint8_t> package)¶ Flashes a specific depthai application package that was generated using createDepthaiApplicationPackage or saveDepthaiApplicationPackage
- Parameters
package
: Depthai application package to flash to the board
-
std::tuple<bool, std::string>
flashBootloader
(std::function<void(float)> progressCallback, std::string path = "", )¶ Flashes bootloader to the current board
- Parameters
progressCallback
: Callback that sends back a value between 0..1 which signifies current flashing progresspath
: Optional parameter to custom bootloader to flash
-
std::tuple<bool, std::string>
flashBootloader
(Memory memory, Type type, std::function<void(float)> progressCallback, std::string path = "", )¶ Flash selected bootloader to the current board
- Parameters
memory
: Memory to flashtype
: Bootloader type to flashprogressCallback
: Callback that sends back a value between 0..1 which signifies current flashing progresspath
: Optional parameter to custom bootloader to flash
-
nlohmann::json
readConfigData
(Memory memory = Memory::AUTO, Type type = Type::AUTO)¶ Flash arbitrary data at custom offset in specified memory
- Return
Unstructured configuration data
- Parameters
memory
: Memory to flashoffset
: Offset at which to flash the given data in bytesprogressCallback
: Callback that sends back a value between 0..1 which signifies current flashing progressdata
: Data to flash Reads configuration data from bootloader
- Parameters
memory
: Optional - from which memory to read configuration datatype
: Optional - from which type of bootloader to read configuration data
-
std::tuple<bool, std::string>
flashConfigData
(nlohmann::json configData, Memory memory = Memory::AUTO, Type type = Type::AUTO)¶ Flashes configuration data to bootloader
- Parameters
configData
: Unstructured configuration datamemory
: Optional - to which memory flash configurationtype
: Optional - for which type of bootloader to flash configuration
-
std::tuple<bool, std::string>
flashConfigFile
(std::string configPath, Memory memory = Memory::AUTO, Type type = Type::AUTO)¶ Flashes configuration data to bootloader
- Parameters
configPath
: Unstructured configuration datamemory
: Optional - to which memory flash configurationtype
: Optional - for which type of bootloader to flash configuration
-
std::tuple<bool, std::string>
flashConfigClear
(Memory memory = Memory::AUTO, Type type = Type::AUTO)¶ Clears configuration data
- Parameters
memory
: Optional - on which memory to clear configuration datatype
: Optional - for which type of bootloader to clear configuration data
-
Config
readConfig
(Memory memory = Memory::AUTO, Type type = Type::AUTO)¶ Reads configuration from bootloader
- Return
Configuration structure
- Parameters
memory
: Optional - from which memory to read configurationtype
: Optional - from which type of bootloader to read configuration
-
std::tuple<bool, std::string>
flashConfig
(const Config &config, Memory memory = Memory::AUTO, Type type = Type::AUTO)¶ Flashes configuration to bootloader
- Parameters
configData
: Configuration structurememory
: Optional - to which memory flash configurationtype
: Optional - for which type of bootloader to flash configuration
-
void
bootMemory
(const std::vector<uint8_t> &fw)¶ Boots a custom FW in memory
- Parameters
fw
:
- Exceptions
A
: runtime exception if there are any communication issues
-
void
bootUsbRomBootloader
()¶ Boots into integrated ROM bootloader in USB mode
- Exceptions
A
: runtime exception if there are any communication issues
-
bool
isEmbeddedVersion
() const¶ - Return
True when bootloader was booted using latest bootloader integrated in the library. False when bootloader is already running on the device and just connected to.
-
Type
getType
() const¶ - Return
Type of currently connected bootloader
-
bool
isAllowedFlashingBootloader
() const¶ - Return
True if allowed to flash bootloader
-
void
close
()¶ Explicitly closes connection to device.
- Note
This function does not need to be explicitly called as destructor closes the device automatically
-
bool
isClosed
() const¶ Is the device already closed (or disconnected)
Public Static Functions
-
std::tuple<bool, DeviceInfo>
getFirstAvailableDevice
()¶ Searches for connected devices in either UNBOOTED or BOOTLOADER states and returns first available.
- Return
Tuple of boolean and DeviceInfo. If found boolean is true and DeviceInfo describes the device. Otherwise false
-
std::vector<DeviceInfo>
getAllAvailableDevices
()¶ Searches for connected devices in either UNBOOTED or BOOTLOADER states.
- Return
Vector of all found devices
-
std::vector<uint8_t>
createDepthaiApplicationPackage
(const Pipeline &pipeline, std::string pathToCmd = "", bool compress = false)¶ Creates application package which can be flashed to depthai device.
- Return
Depthai application package
- Parameters
pipeline
: Pipeline from which to create the application packagepathToCmd
: Optional path to custom device firmwarecompress
: Optional boolean which specifies if contents should be compressed
-
std::vector<uint8_t>
createDepthaiApplicationPackage
(const Pipeline &pipeline, bool compress)¶ Creates application package which can be flashed to depthai device.
- Return
Depthai application package
- Parameters
pipeline
: Pipeline from which to create the application packagecompress
: Specifies if contents should be compressed
-
void
saveDepthaiApplicationPackage
(std::string path, const Pipeline &pipeline, std::string pathToCmd = "", bool compress = false)¶ Saves application package to a file which can be flashed to depthai device.
- Parameters
path
: Path where to save the application packagepipeline
: Pipeline from which to create the application packagepathToCmd
: Optional path to custom device firmwarecompress
: Optional boolean which specifies if contents should be compressed
-
void
saveDepthaiApplicationPackage
(std::string path, const Pipeline &pipeline, bool compress)¶ Saves application package to a file which can be flashed to depthai device.
- Parameters
path
: Path where to save the application packagepipeline
: Pipeline from which to create the application packagecompress
: Specifies if contents should be compressed
-
std::vector<std::uint8_t>
getEmbeddedBootloaderBinary
(Type type = DEFAULT_TYPE)¶ - Return
Embedded bootloader binary
Public Static Attributes
-
constexpr const Type
DEFAULT_TYPE
= {Type::USB}¶ Default Bootloader type.
-
struct
Config
: public dai::bootloader::Config¶ Public Functions
-
void
setStaticIPv4
(std::string ip, std::string mask, std::string gateway)¶ Setting a static IPv4 won’t start DHCP client.
-
void
setDynamicIPv4
(std::string ip, std::string mask, std::string gateway)¶ Setting a dynamic IPv4 will set that IP as well as start DHCP client.
-
bool
isStaticIPV4
()¶ Get if static IPv4 configuration is set.
-
std::string
getIPv4
()¶ Get IPv4.
-
std::string
getIPv4Mask
()¶ Get IPv4 mask.
-
std::string
getIPv4Gateway
()¶ Get IPv4 gateway.
-
void
setDnsIPv4
(std::string dns, std::string dnsAlt = "")¶ Set IPv4 DNS options.
-
std::string
getDnsIPv4
()¶ Get primary IPv4 DNS server.
-
std::string
getDnsAltIPv4
()¶ Get alternate IPv4 DNS server.
-
void
setUsbTimeout
(std::chrono::milliseconds ms)¶ Set USB timeout.
-
std::chrono::milliseconds
getUsbTimeout
()¶ Get USB timeout.
-
void
setNetworkTimeout
(std::chrono::milliseconds ms)¶ Set NETWOR timeout.
-
std::chrono::milliseconds
getNetworkTimeout
()¶ Get NETWORK timeout.
-
void
setMacAddress
(std::string mac)¶ Set MAC address if not flashed on controller.
-
std::string
getMacAddress
()¶ Get MAC address if not flashed on controller.
-
void
-
struct
Version
¶ - #include <DeviceBootloader.hpp>
Bootloader version structure.
-
-
struct
DeviceInfo
¶ - #include <XLinkConnection.hpp>
Describes a connected device
-
class
EdgeDetectorConfig
: public dai::Buffer - #include <EdgeDetectorConfig.hpp>
EdgeDetectorConfig message. Carries sobel edge filter config.
Public Functions
-
EdgeDetectorConfig
() Construct EdgeDetectorConfig message.
-
void
setSobelFilterKernels
(const std::vector<std::vector<int>> &horizontalKernel, const std::vector<std::vector<int>> &verticalKernel) Set sobel filter horizontal and vertical 3x3 kernels
- Parameters
horizontalKernel
: Used for horizontal gradient computation in 3x3 Sobel filterverticalKernel
: Used for vertical gradient computation in 3x3 Sobel filter
-
EdgeDetectorConfigData
getConfigData
() const Retrieve configuration data for EdgeDetector
- Return
EdgeDetectorConfigData: sobel filter horizontal and vertical 3x3 kernels
-
-
struct
EdgeDetectorConfigData
¶ - #include <RawEdgeDetectorConfig.hpp>
EdgeDetectorConfigData configuration data structure.
Public Members
-
std::vector<std::vector<int>>
sobelFilterHorizontalKernel
¶ Used for horizontal gradient computation in 3x3 Sobel filter Format - 3x3 matrix, 2nd column must be 0 Default - +1 0 -1; +2 0 -2; +1 0 -1
-
std::vector<std::vector<int>>
sobelFilterVerticalKernel
¶ Used for vertical gradient computation in 3x3 Sobel filter Format - 3x3 matrix, 2nd row must be 0 Default - +1 +2 +1; 0 0 0; -1 -2 -1
-
std::vector<std::vector<int>>
-
struct
EdgeDetectorProperties
: public dai::PropertiesSerializable<Properties, EdgeDetectorProperties>¶ - #include <EdgeDetectorProperties.hpp>
Specify properties for EdgeDetector
Public Members
-
RawEdgeDetectorConfig
initialConfig
¶ Initial edge detector config.
-
int
outputFrameSize
= 1 * 1024 * 1024¶ Maximum output frame size in bytes (eg: 300x300 BGR image -> 300*300*3 bytes)
-
int
numFramesPool
= 4¶ Num frames in output pool.
-
RawEdgeDetectorConfig
-
struct
EepromData
¶ - #include <EepromData.hpp>
EepromData structure
Contains the Calibration and Board data stored on device
-
struct
Extrinsics
¶ - #include <Extrinsics.hpp>
Extrinsics structure.
-
class
FeatureTrackerConfig
: public dai::Buffer - #include <FeatureTrackerConfig.hpp>
FeatureTrackerConfig message. Carries config for feature tracking algorithm
Public Functions
-
FeatureTrackerConfig
() Construct FeatureTrackerConfig message.
-
void
setCornerDetector
(dai::FeatureTrackerConfig::CornerDetector::Type cornerDetector) Set corner detector algorithm type.
- Parameters
cornerDetector
: Corner detector type, HARRIS or SHI_THOMASI
-
void
setCornerDetector
(dai::FeatureTrackerConfig::CornerDetector config) Set corner detector full configuration.
- Parameters
config
: Corner detector configuration
-
void
setOpticalFlow
() Set optical flow as motion estimation algorithm type.
-
void
setOpticalFlow
(dai::FeatureTrackerConfig::MotionEstimator::OpticalFlow config) Set optical flow full configuration.
- Parameters
config
: Optical flow configuration
-
void
setHwMotionEstimation
() Set hardware accelerated motion estimation using block matching. Faster than optical flow (software implementation) but might not be as accurate.
-
void
setNumTargetFeatures
(std::int32_t numTargetFeatures) Set number of target features to detect.
- Parameters
numTargetFeatures
: Number of features
-
void
setMotionEstimator
(bool enable) Enable or disable motion estimator.
- Parameters
enable
:
-
void
setMotionEstimator
(dai::FeatureTrackerConfig::MotionEstimator config) Set motion estimator full configuration.
- Parameters
config
: Motion estimator configuration
-
void
setFeatureMaintainer
(bool enable) Enable or disable feature maintainer.
- Parameters
enable
:
-
void
setFeatureMaintainer
(dai::FeatureTrackerConfig::FeatureMaintainer config) Set feature maintainer full configuration.
- Parameters
config
: feature maintainer configuration
-
void
set
(dai::RawFeatureTrackerConfig config) Set explicit configuration.
- Parameters
config
: Explicit configuration
-
dai::RawFeatureTrackerConfig
get
() const Retrieve configuration data for FeatureTracker.
- Return
config for feature tracking algorithm
-
-
struct
FeatureTrackerProperties
: public dai::PropertiesSerializable<Properties, FeatureTrackerProperties>¶ - #include <FeatureTrackerProperties.hpp>
Specify properties for FeatureTracker
Public Members
-
RawFeatureTrackerConfig
initialConfig
¶ Initial feature tracker config
-
std::int32_t
numShaves
= 1¶ Number of shaves reserved for feature tracking. Optical flow can use 1 or 2 shaves, while for corner detection only 1 is enough. Hardware motion estimation doesn’t require shaves. Maximum 2, minimum 1.
-
std::int32_t
numMemorySlices
= 1¶ Number of memory slices reserved for feature tracking. Optical flow can use 1 or 2 memory slices, while for corner detection only 1 is enough. Maximum number of features depends on the number of allocated memory slices. Hardware motion estimation doesn’t require memory slices. Maximum 2, minimum 1.
-
RawFeatureTrackerConfig
-
struct
GlobalProperties
: public dai::PropertiesSerializable<Properties, GlobalProperties>¶ - #include <GlobalProperties.hpp>
Specify properties which apply for whole pipeline
Public Members
-
double
leonCssFrequencyHz
= 700 * 1000 * 1000¶ Set frequency of Leon OS - Increasing can improve performance, at the cost of higher power draw
-
double
leonMssFrequencyHz
= 700 * 1000 * 1000¶ Set frequency of Leon RT - Increasing can improve performance, at the cost of higher power draw
-
tl::optional<dai::EepromData>
calibData
¶ Calibration data sent through pipeline
-
tl::optional<std::uint32_t>
cameraTuningBlobSize
¶ Camera tuning blob size in bytes
-
std::string
cameraTuningBlobUri
¶ Uri which points to camera tuning blob
-
int32_t
xlinkChunkSize
= -1¶ Chunk size for splitting device-sent XLink packets, in bytes. A larger value could increase performance, with 0 disabling chunking. A negative value won’t modify the device defaults - configured per protocol, currently 64*1024 for both USB and Ethernet.
-
double
-
class
ImageManipConfig
: public dai::Buffer - #include <ImageManipConfig.hpp>
ImageManipConfig message. Specifies image manipulation options like:
Crop
Resize
Warp
…
Public Functions
-
ImageManipConfig
() Construct ImageManipConfig message.
-
void
setCropRect
(float xmin, float ymin, float xmax, float ymax) Specifies crop with rectangle with normalized values (0..1)
- Parameters
xmin
: Top left X coordinate of rectangleymin
: Top left Y coordinate of rectanglexmax
: Bottom right X coordinate of rectangleymax
: Bottom right Y coordinate of rectangle
-
void
setCropRect
(std::tuple<float, float, float, float> coordinates) Specifies crop with rectangle with normalized values (0..1)
- Parameters
coordinates
: Coordinate of rectangle
-
void
setCropRotatedRect
(RotatedRect rr, bool normalizedCoords = true) Specifies crop with rotated rectangle. Optionally as non normalized coordinates
- Parameters
rr
: Rotated rectangle which specifies cropnormalizedCoords
: If true coordinates are in normalized range (0..1) otherwise absolute
-
void
setCenterCrop
(float ratio, float whRatio = 1.0f) Specifies a centered crop.
- Parameters
ratio
: Ratio between input image and crop region (0..1)whRatio
: Crop region aspect ratio - 1 equals to square, 1.7 equals to 16:9, …
-
void
setWarpTransformFourPoints
(std::vector<Point2f> pt, bool normalizedCoords) Specifies warp by supplying 4 points in either absolute or normalized coordinates
- Parameters
pt
: 4 points specifying warpnormalizedCoords
: If true pt is interpreted as normalized, absolute otherwise
-
void
setWarpTransformMatrix3x3
(std::vector<float> mat) Specifies warp with a 3x3 matrix
- Parameters
mat
: 3x3 matrix
-
void
setWarpBorderReplicatePixels
() Specifies that warp replicates border pixels
-
void
setWarpBorderFillColor
(int red, int green, int blue) Specifies fill color for border pixels. Example:
setWarpBorderFillColor(255,255,255) -> white
setWarpBorderFillColor(0,0,255) -> blue
- Parameters
red
: Red componentgreen
: Green componentblue
: Blue component
-
void
setRotationDegrees
(float deg) Specifies clockwise rotation in degrees
- Parameters
deg
: Rotation in degrees
-
void
setRotationRadians
(float rad) Specifies clockwise rotation in radians
- Parameters
rad
: Rotation in radians
-
void
setResize
(int w, int h) Specifies output image size. After crop stage the image will be stretched to fit.
- Parameters
w
: Width in pixelsh
: Height in pixels
-
void
setResize
(std::tuple<int, int> size) Specifies output image size. After crop stage the image will be stretched to fit.
- Parameters
size
: Size in pixels
-
void
setResizeThumbnail
(int w, int h, int bgRed = 0, int bgGreen = 0, int bgBlue = 0) Specifies output image size. After crop stage the image will be resized by preserving aspect ration. Optionally background can be specified.
- Parameters
w
: Width in pixelsh
: Height in pixelsbgRed
: Red componentbgGreen
: Green componentbgBlue
: Blue component
-
void
setResizeThumbnail
(std::tuple<int, int> size, int bgRed = 0, int bgGreen = 0, int bgBlue = 0) Specifies output image size. After crop stage the image will be resized by preserving aspect ration. Optionally background can be specified.
- Parameters
size
: Size in pixelsbgRed
: Red componentbgGreen
: Green componentbgBlue
: Blue component
-
void
setHorizontalFlip
(bool flip) Specify horizontal flip
- Parameters
flip
: True to enable flip, false otherwise
-
void
setReusePreviousImage
(bool reuse) Instruct ImageManip to not remove current image from its queue and use the same for next message.
- Parameters
reuse
: True to enable reuse, false otherwise
-
void
setSkipCurrentImage
(bool skip) Instructs ImageManip to skip current image and wait for next in queue.
- Parameters
skip
: True to skip current image, false otherwise
-
void
setKeepAspectRatio
(bool keep) Specifies to whether to keep aspect ratio or not
-
float
getCropXMin
() const - Return
Top left X coordinate of crop region
-
float
getCropYMin
() const - Return
Top left Y coordinate of crop region
-
float
getCropXMax
() const - Return
Bottom right X coordinate of crop region
-
float
getCropYMax
() const - Return
Bottom right Y coordinate of crop region
-
int
getResizeWidth
() const - Return
Output image width
-
int
getResizeHeight
() const - Return
Output image height
-
CropConfig
getCropConfig
() const - Return
Crop configuration
-
ResizeConfig
getResizeConfig
() const - Return
Resize configuration
-
FormatConfig
getFormatConfig
() const - Return
Format configuration
-
bool
isResizeThumbnail
() const - Return
True if resize thumbnail mode is set, false otherwise
-
struct
ImageManipProperties
: public dai::PropertiesSerializable<Properties, ImageManipProperties>¶ - #include <ImageManipProperties.hpp>
Specify properties for ImageManip
Public Members
-
RawImageManipConfig
initialConfig
¶ Initial configuration for ImageManip node.
-
int
outputFrameSize
= 1 * 1024 * 1024¶ Maximum output frame size in bytes (eg: 300x300 BGR image -> 300*300*3 bytes)
-
int
numFramesPool
= 4¶ Num frames in output pool.
-
RawImageManipConfig
-
struct
ImgDetection
¶ - #include <RawImgDetections.hpp>
ImgDetection structure.
Subclassed by dai::SpatialImgDetection
-
class
ImgDetections
: public dai::Buffer - #include <ImgDetections.hpp>
ImgDetections message. Carries normalized detection results
Public Functions
-
ImgDetections
() Construct ImgDetections message.
Public Members
-
std::vector<ImgDetection> &
detections
Detections.
-
-
class
ImgFrame
: public dai::Buffer - #include <ImgFrame.hpp>
ImgFrame message. Carries image data and metadata.
Public Functions
-
std::chrono::time_point<std::chrono::steady_clock, std::chrono::steady_clock::duration>
getTimestamp
() const Retrieves image timestamp related to steady_clock / time.monotonic
-
std::chrono::time_point<std::chrono::steady_clock, std::chrono::steady_clock::duration>
getTimestampDevice
() const Retrieves image timestamp directly captured from device’s monotonic clock, not synchronized to host time. Used mostly for debugging
-
unsigned int
getInstanceNum
() const Retrieves instance number
-
unsigned int
getCategory
() const Retrieves image category
-
unsigned int
getSequenceNum
() const Retrieves image sequence number
-
unsigned int
getWidth
() const Retrieves image width in pixels
-
unsigned int
getHeight
() const Retrieves image height in pixels
-
Type
getType
() const Retrieves image type
-
void
setTimestamp
(std::chrono::time_point<std::chrono::steady_clock, std::chrono::steady_clock::duration> timestamp) Specifies current timestamp, related to steady_clock / time.monotonic
-
void
setInstanceNum
(unsigned int instance) Instance number relates to the origin of the frame (which camera)
- Parameters
instance
: Instance number
-
void
setCategory
(unsigned int category) - Parameters
category
: Image category
-
void
setSequenceNum
(unsigned int seq) Specifies sequence number
- Parameters
seq
: Sequence number
-
void
setWidth
(unsigned int width) Specifies frame width
- Parameters
width
: frame width
-
void
setHeight
(unsigned int height) Specifies frame height
- Parameters
height
: frame height
-
void
setSize
(unsigned int width, unsigned int height) Specifies frame size
- Parameters
height
: frame heightwidth
: frame width
-
void
setSize
(std::tuple<unsigned int, unsigned int> size) Specifies frame size
- Parameters
size
: frame size
-
void
setType
(Type type) Specifies frame type, RGB, BGR, …
- Parameters
type
: Type of image
-
void
setFrame
(cv::Mat frame) Copies cv::Mat data to
ImgFrame buffer- Note
This API only available if OpenCV support is enabled
- Parameters
frame
: Input cv::Mat frame from which to copy the data
-
cv::Mat
getFrame
(bool copy = false) Retrieves data as cv::Mat with specified width, height and type
- Note
This API only available if OpenCV support is enabled
- Return
cv::Mat with corresponding to ImgFrame parameters
- Parameters
copy
: If false only a reference to data is made, otherwise a copy
-
cv::Mat
getCvFrame
() Retrieves cv::Mat suitable for use in common opencv functions.
ImgFrame is converted to color BGR interleaved or grayscale depending on type.- Note
This API only available if OpenCV support is enabled
A copy is always made
- Return
cv::Mat for use in opencv functions
-
std::chrono::time_point<std::chrono::steady_clock, std::chrono::steady_clock::duration>
-
class
IMUData
: public dai::Buffer - #include <IMUData.hpp>
IMUData message. Carries normalized detection results
Public Functions
-
IMUData
() Construct IMUData message.
Public Members
-
std::vector<IMUPacket> &
packets
Detections.
-
-
struct
IMUPacket
¶ - #include <RawIMUData.hpp>
IMU output
Contains combined output for all possible modes. Only the enabled outputs are populated.
-
struct
IMUProperties
: public dai::PropertiesSerializable<Properties, IMUProperties>¶
-
struct
IMUReport
¶ Subclassed by dai::IMUReportAccelerometer, dai::IMUReportGyroscope, dai::IMUReportMagneticField, dai::IMUReportRotationVectorWAcc
-
struct
IMUReportAccelerometer
: public dai::IMUReport¶ - #include <RawIMUData.hpp>
Accelerometer.
Units are [m/s^2]
-
struct
IMUReportGyroscope
: public dai::IMUReport¶ - #include <RawIMUData.hpp>
Gyroscope.
Units are [rad/s]
-
struct
IMUReportMagneticField
: public dai::IMUReport¶ - #include <RawIMUData.hpp>
Magnetic field.
Units are [uTesla]
-
struct
IMUReportRotationVectorWAcc
: public dai::IMUReport¶ - #include <RawIMUData.hpp>
Rotation Vector with Accuracy.
Contains quaternion components: i,j,k,real
-
struct
IMUSensorConfig
¶
-
template<typename
T
>
classLockingQueue
¶
-
struct
LogMessage
¶
-
struct
MemoryInfo
¶ - #include <MemoryInfo.hpp>
MemoryInfo structure
Free, remaining and total memory stats
-
struct
MonoCameraProperties
: public dai::PropertiesSerializable<Properties, MonoCameraProperties>¶ - #include <MonoCameraProperties.hpp>
Specify properties for MonoCamera such as camera ID, …
Public Types
Public Members
-
CameraBoardSocket
boardSocket
= CameraBoardSocket::AUTO¶ Which socket will mono camera use
-
CameraImageOrientation
imageOrientation
= CameraImageOrientation::AUTO¶ Camera sensor image orientation / pixel readout
-
SensorResolution
resolution
= SensorResolution::THE_720_P¶ Select the camera sensor resolution
-
float
fps
= 30.0¶ Camera sensor FPS
-
CameraBoardSocket
-
struct
NeuralNetworkProperties
: public dai::PropertiesSerializable<Properties, NeuralNetworkProperties>¶ - #include <NeuralNetworkProperties.hpp>
Specify properties for NeuralNetwork such as blob path, …
Subclassed by dai::PropertiesSerializable< NeuralNetworkProperties, DetectionNetworkProperties >
Public Members
-
tl::optional<std::uint32_t>
blobSize
¶ Blob binary size in bytes
-
std::string
blobUri
¶ Uri which points to blob
-
std::uint32_t
numFrames
= 8¶ Number of available output tensors in pool
-
std::uint32_t
numThreads
= 0¶ Number of threads to create for running inference. 0 = auto
-
std::uint32_t
numNCEPerThread
= 0¶ Number of NCE (Neural Compute Engine) per inference thread. 0 = auto
-
tl::optional<std::uint32_t>
-
class
NNData
: public dai::Buffer - #include <NNData.hpp>
NNData message. Carries tensors and their metadata
Public Functions
-
NNData
() Construct NNData message.
-
void
setLayer
(const std::string &name, std::vector<std::uint8_t> data) Set a layer with datatype U8.
- Parameters
name
: Name of the layerdata
: Data to store
-
void
setLayer
(const std::string &name, const std::vector<int> &data) Set a layer with datatype U8. Integers are cast to bytes.
- Parameters
name
: Name of the layerdata
: Data to store
-
void
setLayer
(const std::string &name, std::vector<float> data) Set a layer with datatype FP16. Float values are converted to FP16.
- Parameters
name
: Name of the layerdata
: Data to store
-
void
setLayer
(const std::string &name, std::vector<double> data) Set a layer with datatype FP16. Double values are converted to FP16.
- Parameters
name
: Name of the layerdata
: Data to store
-
std::vector<std::string>
getAllLayerNames
() const - Return
Names of all layers added
-
std::vector<TensorInfo>
getAllLayers
() const - Return
All layers and their information
-
bool
getLayer
(const std::string &name, TensorInfo &tensor) const Retrieve layers tensor information
- Return
True if layer exists, false otherwise
- Parameters
name
: Name of the layer[out] tensor
: Outputs tensor information of that layer
-
bool
hasLayer
(const std::string &name) const Checks if given layer exists
- Return
True if layer exists, false otherwise
- Parameters
name
: Name of the layer
-
bool
getLayerDatatype
(const std::string &name, TensorInfo::DataType &datatype) const Retrieve datatype of a layers tensor
- Return
True if layer exists, false otherwise
- Parameters
name
: Name of the layer[out] datatype
: Datatype of layers tensor
-
std::vector<std::uint8_t>
getLayerUInt8
(const std::string &name) const Convenience function to retrieve U8 data from layer
- Return
U8 binary data
- Parameters
name
: Name of the layer
-
std::vector<float>
getLayerFp16
(const std::string &name) const Convenience function to retrieve float values from layers FP16 tensor
- Return
Float data
- Parameters
name
: Name of the layer
-
std::vector<std::int32_t>
getLayerInt32
(const std::string &name) const Convenience function to retrieve INT32 values from layers tensor
- Return
INT32 data
- Parameters
name
: Name of the layer
-
std::vector<std::uint8_t>
getFirstLayerUInt8
() const Convenience function to retrieve U8 data from first layer
- Return
U8 binary data
-
std::vector<float>
getFirstLayerFp16
() const Convenience function to retrieve float values from first layers FP16 tensor
- Return
Float data
-
std::vector<std::int32_t>
getFirstLayerInt32
() const Convenience function to retrieve INT32 values from first layers tensor
- Return
INT32 data
-
-
class
Node
¶ - #include <Node.hpp>
Abstract Node.
Subclassed by dai::NodeCRTP< Node, ColorCamera, ColorCameraProperties >, dai::NodeCRTP< Node, EdgeDetector, EdgeDetectorProperties >, dai::NodeCRTP< Node, FeatureTracker, FeatureTrackerProperties >, dai::NodeCRTP< Node, ImageManip, ImageManipProperties >, dai::NodeCRTP< Node, IMU, IMUProperties >, dai::NodeCRTP< Node, MonoCamera, MonoCameraProperties >, dai::NodeCRTP< Node, NeuralNetwork, NeuralNetworkProperties >, dai::NodeCRTP< Node, ObjectTracker, ObjectTrackerProperties >, dai::NodeCRTP< Node, Script, ScriptProperties >, dai::NodeCRTP< Node, SpatialLocationCalculator, SpatialLocationCalculatorProperties >, dai::NodeCRTP< Node, SPIIn, SPIInProperties >, dai::NodeCRTP< Node, SPIOut, SPIOutProperties >, dai::NodeCRTP< Node, StereoDepth, StereoDepthProperties >, dai::NodeCRTP< Node, SystemLogger, SystemLoggerProperties >, dai::NodeCRTP< Node, VideoEncoder, VideoEncoderProperties >, dai::NodeCRTP< Node, XLinkIn, XLinkInProperties >, dai::NodeCRTP< Node, XLinkOut, XLinkOutProperties >
Public Types
Public Functions
-
const char *
getName
() const = 0¶ Retrieves nodes name.
-
std::vector<Output>
getOutputs
()¶ Retrieves all nodes outputs.
-
std::vector<Input>
getInputs
()¶ Retrieves all nodes inputs.
-
std::vector<Output*>
getOutputRefs
()¶ Retrieves reference to node outputs.
-
std::vector<const Output*>
getOutputRefs
() const¶ Retrieves reference to node outputs.
-
std::vector<Input*>
getInputRefs
()¶ Retrieves reference to node inputs.
-
std::vector<const Input*>
getInputRefs
() const¶ Retrieves reference to node inputs.
-
const AssetManager &
getAssetManager
() const¶ Get node AssetManager as a const reference.
-
AssetManager &
getAssetManager
()¶ Get node AssetManager as a reference.
-
struct
Connection
¶ - #include <Node.hpp>
Connection between an Input and Output.
-
const char *
-
struct
NodeConnectionSchema
¶ - #include <NodeConnectionSchema.hpp>
Specifies a connection between nodes IOs
-
template<typename
Base
, typenameDerived
, typenameProps
>
classNodeCRTP
: public Base¶ Public Members
-
Properties &
properties
¶ Underlying properties.
-
Properties &
-
struct
NodeIoInfo
¶ - #include <NodeIoInfo.hpp>
NodeIo informations such as name, type, …
-
struct
ObjectTrackerProperties
: public dai::PropertiesSerializable<Properties, ObjectTrackerProperties>¶ - #include <ObjectTrackerProperties.hpp>
Specify properties for ObjectTracker
Public Members
-
float
trackerThreshold
= 0.0¶ Confidence threshold for tracklets. Above this threshold detections will be tracked. Default 0, all detections are tracked.
-
std::int32_t
maxObjectsToTrack
= 60¶ Maximum number of objects to track. Maximum 60 for SHORT_TERM_KCF, maximum 1000 for other tracking methods. Default 60.
-
std::vector<std::uint32_t>
detectionLabelsToTrack
¶ Which detections labels to track. Default all labels are tracked.
-
TrackerType
trackerType
= TrackerType::ZERO_TERM_IMAGELESS¶ Tracking method.
-
TrackerIdAssignmentPolicy
trackerIdAssignmentPolicy
= TrackerIdAssignmentPolicy::UNIQUE_ID¶ New ID assignment policy.
-
float
-
class
OpenVINO
¶ - #include <OpenVINO.hpp>
Support for basic OpenVINO related actions like version identification of neural network blobs,…
Public Types
Public Static Functions
-
std::string
getVersionName
(Version version)¶ Returns string representation of a given version
- Return
Name of a given version
- Parameters
version
: OpenVINO version
-
Version
parseVersionName
(const std::string &versionString)¶ Creates Version from string representation. Throws if not possible.
- Return
Version object if successful
- Parameters
versionString
: Version as string
-
std::vector<Version>
getBlobSupportedVersions
(std::uint32_t majorVersion, std::uint32_t minorVersion)¶ Returns a list of potentially supported versions for a specified blob major and minor versions.
Public Static Attributes
-
constexpr const Version
DEFAULT_VERSION
= VERSION_2021_4¶ Main OpenVINO version.
-
std::string
-
template<typename
T
>
classPimpl
¶
-
class
Pipeline
- #include <Pipeline.hpp>
Represents the pipeline, set of nodes and connections between them.
Public Functions
-
Pipeline
() Constructs a new pipeline
-
Pipeline
clone
() const Clone the pipeline (Creates a copy)
-
GlobalProperties
getGlobalProperties
() const - Return
Global properties of current pipeline
-
PipelineSchema
getPipelineSchema
() const - Return
Pipeline schema
Adds a node to pipeline.
Node is specified by template argument N
Removes a node from pipeline.
-
std::vector<std::shared_ptr<const Node>>
getAllNodes
() const Get a vector of all nodes.
-
std::vector<std::shared_ptr<Node>>
getAllNodes
() Get a vector of all nodes.
-
std::shared_ptr<const Node>
getNode
(Node::Id id) const Get node with id if it exists, nullptr otherwise.
-
std::vector<Node::Connection>
getConnections
() const Get all connections.
-
const NodeConnectionMap &
getConnectionMap
() const Get a reference to internal connection representation.
-
const NodeMap &
getNodeMap
() const Get a reference to internal node map.
-
void
link
(const Node::Output &out, const Node::Input &in) Link output to an input. Both nodes must be on the same pipeline
Throws an error if they aren’t or cannot be connected
- Parameters
out
: Nodes output to connect fromin
: Nodes input to connect to
-
void
unlink
(const Node::Output &out, const Node::Input &in) Unlink output from an input.
Throws an error if link doesn’t exists
- Parameters
out
: Nodes output to unlink fromin
: Nodes input to unlink to
-
const AssetManager &
getAssetManager
() const Get pipelines AssetManager as reference.
-
AssetManager &
getAssetManager
() Get pipelines AssetManager as reference.
-
void
setOpenVINOVersion
(OpenVINO::Version version) Set a specific OpenVINO version to use with this pipeline.
-
void
setCalibrationData
(CalibrationHandler calibrationDataHandler) Sets the calibration in pipeline which overrides the calibration data in eeprom
- Parameters
calibrationDataHandler
: CalibrationHandler object which is loaded with calibration information.
-
CalibrationHandler
getCalibrationData
() const gets the calibration data which is set through pipeline
- Return
the calibrationHandler with calib data in the pipeline
-
tl::optional<OpenVINO::Version>
getRequiredOpenVINOVersion
() const Get required OpenVINO version to run this pipeline. Can be none.
-
void
setCameraTuningBlobPath
(const std::string &path) Set a camera IQ (Image Quality) tuning blob, used for all cameras.
-
void
setXLinkChunkSize
(int sizeBytes) Set chunk size for splitting device-sent XLink packets, in bytes. A larger value could increase performance, with 0 disabling chunking. A negative value won’t modify the device defaults - configured per protocol, currently 64*1024 for both USB and Ethernet.
-
bool
isOpenVINOVersionCompatible
(OpenVINO::Version version) const Checks whether a given OpenVINO version is compatible with the pipeline.
-
Device::Config
getDeviceConfig
() const Get device configuration needed for this pipeline.
-
-
class
PipelineImpl
¶
-
struct
PipelineSchema
¶ - #include <PipelineSchema.hpp>
Specifies whole pipeline, nodes, properties and connections between nodes IOs
-
struct
Properties
¶ - #include <Properties.hpp>
Base Properties structure.
Subclassed by dai::PropertiesSerializable< Properties, ColorCameraProperties >, dai::PropertiesSerializable< Properties, EdgeDetectorProperties >, dai::PropertiesSerializable< Properties, FeatureTrackerProperties >, dai::PropertiesSerializable< Properties, GlobalProperties >, dai::PropertiesSerializable< Properties, ImageManipProperties >, dai::PropertiesSerializable< Properties, IMUProperties >, dai::PropertiesSerializable< Properties, MonoCameraProperties >, dai::PropertiesSerializable< Properties, NeuralNetworkProperties >, dai::PropertiesSerializable< Properties, ObjectTrackerProperties >, dai::PropertiesSerializable< Properties, ScriptProperties >, dai::PropertiesSerializable< Properties, SpatialLocationCalculatorProperties >, dai::PropertiesSerializable< Properties, SPIInProperties >, dai::PropertiesSerializable< Properties, SPIOutProperties >, dai::PropertiesSerializable< Properties, StereoDepthProperties >, dai::PropertiesSerializable< Properties, SystemLoggerProperties >, dai::PropertiesSerializable< Properties, VideoEncoderProperties >, dai::PropertiesSerializable< Properties, XLinkInProperties >, dai::PropertiesSerializable< Properties, XLinkOutProperties >
-
template<typename
Base
, typenameDerived
>
structPropertiesSerializable
: public Base¶ - #include <Properties.hpp>
Serializable properties.
-
struct
RawBuffer
¶ - #include <RawBuffer.hpp>
RawBuffer structure.
Subclassed by dai::RawCameraControl, dai::RawEdgeDetectorConfig, dai::RawFeatureTrackerConfig, dai::RawImageManipConfig, dai::RawImgDetections, dai::RawImgFrame, dai::RawIMUData, dai::RawNNData, dai::RawSpatialImgDetections, dai::RawSpatialLocationCalculatorConfig, dai::RawSpatialLocations, dai::RawStereoDepthConfig, dai::RawSystemInformation, dai::RawTrackedFeatures, dai::RawTracklets
-
struct
RawCameraControl
: public dai::RawBuffer¶ - #include <RawCameraControl.hpp>
RawCameraControl structure.
Public Members
-
uint8_t
lensPosition
= 0¶ Lens/VCM position, range: 0..255. Used with
autoFocusMode = OFF
. With current IMX378 modules:max 255: macro focus, at 8cm distance
infinite focus at about 120..130 (may vary from module to module)
lower values lead to out-of-focus (lens too close to the sensor array)
-
struct
ManualExposureParams
¶
-
struct
RegionParams
¶
-
uint8_t
-
struct
RawEdgeDetectorConfig
: public dai::RawBuffer¶ - #include <RawEdgeDetectorConfig.hpp>
RawEdgeDetectorConfig configuration structure.
-
struct
RawFeatureTrackerConfig
: public dai::RawBuffer¶ - #include <RawFeatureTrackerConfig.hpp>
RawFeatureTrackerConfig configuration structure.
Public Members
-
CornerDetector
cornerDetector
¶ Corner detector configuration. Used for feature detection.
-
MotionEstimator
motionEstimator
¶ Motion estimator configuration. Used for feature reidentification between current and previous features.
-
FeatureMaintainer
featureMaintainer
¶ FeatureMaintainer configuration. Used for feature maintaining.
-
struct
CornerDetector
¶ - #include <RawFeatureTrackerConfig.hpp>
Corner detector configuration structure.
Public Members
-
Type
type
= Type::HARRIS¶ Corner detector algorithm type.
-
std::int32_t
cellGridDimension
= 4¶ Ensures distributed feature detection across the image. Image is divided into horizontal and vertical cells, each cell has a target feature count = numTargetFeatures / cellGridDimension. Each cell has its own feature threshold. A value of 4 means that the image is divided into 4x4 cells of equal width/height. Maximum 4, minimum 1.
-
std::int32_t
numTargetFeatures
= 320¶ Target number of features to detect. Maximum number of features is determined at runtime based on algorithm type.
-
std::int32_t
numMaxFeatures
= AUTO¶ Hard limit for the maximum number of features that can be detected. 0 means auto, will be set to the maximum value based on memory constraints.
-
bool
enableSobel
= true¶ Enable 3x3 Sobel operator to smoothen the image whose gradient is to be computed. If disabled, a simple 1D row/column differentiator is used for gradient.
-
bool
enableSorting
= true¶ Enable sorting detected features based on their score or not.
-
Thresholds
thresholds
¶ Threshold settings. These are advanced settings, suitable for debugging/special cases.
-
struct
Thresholds
¶ - #include <RawFeatureTrackerConfig.hpp>
Threshold settings structure for corner detector.
Public Members
-
float
initialValue
= AUTO¶ Minimum strength of a feature which will be detected. 0 means automatic threshold update. Recommended so the tracker can adapt to different scenes/textures. Each cell has its own threshold. Empirical value.
-
float
min
= AUTO¶ Minimum limit for threshold. Applicable when automatic threshold update is enabled. 0 means auto, 6000000 for HARRIS, 1200 for SHI_THOMASI. Empirical value.
-
float
max
= AUTO¶ Maximum limit for threshold. Applicable when automatic threshold update is enabled. 0 means auto. Empirical value.
-
float
decreaseFactor
= 0.9f¶ When detected number of features exceeds the maximum in a cell threshold is lowered by multiplying its value with this factor.
-
float
increaseFactor
= 1.1f¶ When detected number of features doesn’t exceed the maximum in a cell, threshold is increased by multiplying its value with this factor.
-
float
-
Type
-
struct
FeatureMaintainer
¶ - #include <RawFeatureTrackerConfig.hpp>
FeatureMaintainer configuration structure.
Public Members
-
bool
enable
= true¶ Enable feature maintaining or not.
-
float
minimumDistanceBetweenFeatures
= 50¶ Used to filter out detected feature points that are too close. Requires sorting enabled in detector. Unit of measurement is squared euclidean distance in pixels.
-
float
lostFeatureErrorThreshold
= 50000¶ Optical flow measures the tracking error for every feature. If the point can’t be tracked or it’s out of the image it will set this error to a maximum value. This threshold defines the level where the tracking accuracy is considered too bad to keep the point.
-
float
trackedFeatureThreshold
= 200000¶ Once a feature was detected and we started tracking it, we need to update its Harris score on each image. This is needed because a feature point can disappear, or it can become too weak to be tracked. This threshold defines the point where such a feature must be dropped. As the goal of the algorithm is to provide longer tracks, we try to add strong points and track them until they are absolutely untrackable. This is why, this value is usually smaller than the detection threshold.
-
bool
-
struct
MotionEstimator
¶ - #include <RawFeatureTrackerConfig.hpp>
Used for feature reidentification between current and previous features.
Public Members
-
bool
enable
= true¶ Enable motion estimation or not.
-
Type
type
= Type::LUCAS_KANADE_OPTICAL_FLOW¶ Motion estimator algorithm type.
-
OpticalFlow
opticalFlow
¶ Optical flow configuration. Takes effect only if MotionEstimator algorithm type set to LUCAS_KANADE_OPTICAL_FLOW.
-
struct
OpticalFlow
¶ - #include <RawFeatureTrackerConfig.hpp>
Optical flow configuration structure.
Public Members
-
std::int32_t
pyramidLevels
= AUTO¶ Number of pyramid levels, only for optical flow. AUTO means it’s decided based on input resolution: 3 if image width <= 640, else 4. Valid values are either 3/4 for VGA, 4 for 720p and above.
-
std::int32_t
searchWindowWidth
= 5¶ Image patch width used to track features. Must be an odd number, maximum 9. N means the algorithm will be able to track motion at most (N-1)/2 pixels in a direction per pyramid level. Increasing this number increases runtime
-
std::int32_t
searchWindowHeight
= 5¶ Image patch height used to track features. Must be an odd number, maximum 9. N means the algorithm will be able to track motion at most (N-1)/2 pixels in a direction per pyramid level. Increasing this number increases runtime
-
float
epsilon
= 0.01f¶ Feature tracking termination criteria. Optical flow will refine the feature position on each pyramid level until the displacement between two refinements is smaller than this value. Decreasing this number increases runtime.
-
std::int32_t
maxIterations
= 9¶ Feature tracking termination criteria. Optical flow will refine the feature position maximum this many times on each pyramid level. If the Epsilon criteria described in the previous chapter is not met after this number of iterations, the algorithm will continue with the current calculated value. Increasing this number increases runtime.
-
std::int32_t
-
bool
-
CornerDetector
-
struct
RawImageManipConfig
: public dai::RawBuffer¶ - #include <RawImageManipConfig.hpp>
RawImageManipConfig structure.
-
struct
CropConfig
¶
-
struct
CropRect
¶
-
struct
FormatConfig
¶
-
struct
-
struct
RawImgDetections
: public dai::RawBuffer¶ - #include <RawImgDetections.hpp>
RawImgDetections structure.
-
struct
RawImgFrame
: public dai::RawBuffer¶ - #include <RawImgFrame.hpp>
RawImgFrame structure.
-
struct
Specs
¶
-
struct
-
struct
RawSpatialImgDetections
: public dai::RawBuffer¶ - #include <RawSpatialImgDetections.hpp>
RawSpatialImgDetections structure.
-
struct
RawSpatialLocationCalculatorConfig
: public dai::RawBuffer¶ - #include <RawSpatialLocationCalculatorConfig.hpp>
RawSpatialLocation configuration structure.
-
struct
RawSpatialLocations
: public dai::RawBuffer¶ - #include <RawSpatialLocations.hpp>
RawSpatialLocations structure.
-
struct
RawStereoDepthConfig
: public dai::RawBuffer¶ - #include <RawStereoDepthConfig.hpp>
RawStereoDepthConfig configuration structure.
Public Members
-
AlgorithmControl
algorithmControl
¶ Controls the flow of stereo algorithm - left-right check, subpixel etc.
-
PostProcessing
postProcessing
¶ Controls the postprocessing of disparity and/or depth map.
-
CensusTransform
censusTransform
¶ Census transform settings.
-
CostMatching
costMatching
¶ Cost matching settings.
-
CostAggregation
costAggregation
¶ Cost aggregation settings.
-
struct
AlgorithmControl
¶ Public Types
Public Members
-
DepthAlign
depthAlign
= DepthAlign::RECTIFIED_RIGHT¶ Set the disparity/depth alignment to the perspective of a rectified output, or center it
-
bool
enableLeftRightCheck
= true¶ Computes and combines disparities in both L-R and R-L directions, and combine them. For better occlusion handling
-
bool
enableExtended
= false¶ Disparity range increased from 95 to 190, combined from full resolution and downscaled images. Suitable for short range objects
-
bool
enableSubpixel
= false¶ Computes disparity with sub-pixel interpolation (5 fractional bits), suitable for long range
-
std::int32_t
leftRightCheckThreshold
= 10¶ Left-right check threshold for left-right, right-left disparity map combine, 0..128 Used only when left-right check mode is enabled. Defines the maximum difference between the confidence of pixels from left-right and right-left confidence maps
-
std::int32_t
subpixelFractionalBits
= 3¶ Number of fractional bits for subpixel mode
Valid values: 3,4,5
Defines the number of fractional disparities: 2^x
Median filter postprocessing is supported only for 3 fractional bits
-
DepthAlign
-
struct
CensusTransform
¶ - #include <RawStereoDepthConfig.hpp>
The basic cost function used by the Stereo Accelerator for matching the left and right images is the Census Transform. It works on a block of pixels and computes a bit vector which represents the structure of the image in that block. There are two types of Census Transform based on how the middle pixel is used: Classic Approach and Modified Census. The comparisons that are made between pixels can be or not thresholded. In some cases a mask can be applied to filter out only specific bits from the entire bit stream. All these approaches are: Classic Approach: Uses middle pixel to compare against all its neighbors over a defined window. Each comparison results in a new bit, that is 0 if central pixel is smaller, or 1 if is it bigger than its neighbor. Modified Census Transform: same as classic Census Transform, but instead of comparing central pixel with its neighbors, the window mean will be compared with each pixel over the window. Thresholding Census Transform: same as classic Census Transform, but it is not enough that a neighbor pixel to be bigger than the central pixel, it must be significant bigger (based on a threshold). Census Transform with Mask: same as classic Census Transform, but in this case not all of the pixel from the support window are part of the binary descriptor. We use a ma sk “M” to define which pixels are part of the binary descriptor (1), and which pixels should be skipped (0).
Public Types
Public Members
-
KernelSize
kernelSize
= KernelSize::AUTO¶ Census transform kernel size.
-
uint64_t
kernelMask
= 0¶ Census transform mask, default - auto, mask is set based on resolution and kernel size. Disabled for 400p input resolution. Enabled for 720p. 0XA82415 for 5x5 census transform kernel. 0XAA02A8154055 for 7x7 census transform kernel. 0X2AA00AA805540155 for 7x9 census transform kernel. Empirical values.
-
bool
enableMeanMode
= true¶ If enabled, each pixel in the window is compared with the mean window value instead of the central pixel.
-
uint32_t
threshold
= 0¶ Census transform comparison threshold value.
-
KernelSize
-
struct
CostAggregation
¶ - #include <RawStereoDepthConfig.hpp>
Cost Aggregation is based on Semi Global Block Matching (SGBM). This algorithm uses a semi global technique to aggregate the cost map. Ultimately the idea is to build inertia into the stereo algorithm. If a pixel has very little texture information, then odds are the correct disparity for this pixel is close to that of the previous pixel considered. This means that we get improved results in areas with low texture.
Public Members
-
uint8_t
divisionFactor
= 1¶ Cost calculation linear equation parameters.
-
uint16_t
horizontalPenaltyCostP1
= defaultPenaltyP1¶ Horizontal P1 penalty cost parameter.
-
uint16_t
horizontalPenaltyCostP2
= defaultPenaltyP2¶ Horizontal P2 penalty cost parameter.
-
uint16_t
verticalPenaltyCostP1
= defaultPenaltyP1¶ Vertical P1 penalty cost parameter.
-
uint16_t
verticalPenaltyCostP2
= defaultPenaltyP2¶ Vertical P2 penalty cost parameter.
-
uint8_t
-
struct
CostMatching
¶ - #include <RawStereoDepthConfig.hpp>
The matching cost is way of measuring the similarity of image locations in stereo correspondence algorithm. Based on the configuration parameters and based on the descriptor type, a linear equation is applied to computing the cost for each candidate disparity at each pixel.
Public Types
Public Members
-
DisparityWidth
disparityWidth
= DisparityWidth::DISPARITY_96¶ Disparity search range, default 96 pixels.
-
bool
enableCompanding
= false¶ Disparity companding using sparse matching. Matching pixel by pixel for N disparities. Matching every 2nd pixel for M disparitites. Matching every 4th pixel for T disparities. In case of 96 disparities: N=48, M=32, T=16. This way the search range is extended to 176 disparities, by sparse matching. Note: when enabling this flag only depth map will be affected, disparity map is not.
-
uint8_t
invalidDisparityValue
= 0¶ Used only for debug purposes, SW postprocessing handled only invalid value of 0 properly.
-
uint8_t
confidenceThreshold
= 245¶ Disparities with confidence value under this threshold are accepted. Higher confidence threshold means disparities with less confidence are accepted too.
-
LinearEquationParameters
linearEquationParameters
¶ Cost calculation linear equation parameters.
-
struct
LinearEquationParameters
¶ - #include <RawStereoDepthConfig.hpp>
The linear equation applied for computing the cost is: COMB_COST = α*AD + β*(CTC<<3). CLAMP(COMB_COST >> 5, threshold). Where AD is the Absolute Difference between 2 pixels values. CTC is the Census Transform Cost between 2 pixels, based on Hamming distance (xor). The α and β parameters are subject to fine tuning by the user.
-
DisparityWidth
-
struct
PostProcessing
¶ - #include <RawStereoDepthConfig.hpp>
Post-processing filters, all the filters are applied in disparity domain.
Public Members
-
MedianFilter
median
= MedianFilter::KERNEL_5x5¶ Set kernel size for disparity/depth median filtering, or disable
-
std::int16_t
bilateralSigmaValue
= 0¶ Sigma value for bilateral filter. 0 means disabled. A larger value of the parameter means that farther colors within the pixel neighborhood will be mixed together.
-
SpatialFilter
spatialFilter
¶ Edge-preserving filtering: This type of filter will smooth the depth noise while attempting to preserve edges.
-
TemporalFilter
temporalFilter
¶ Temporal filtering with optional persistence. More details about the filter can be found here:
-
ThresholdFilter
thresholdFilter
¶ Threshold filtering. Filters out distances outside of a given interval.
-
SpeckleFilter
speckleFilter
¶ Speckle filtering. Removes speckle noise.
-
DecimationFilter
decimationFilter
¶ Decimation filter. Reduces disparity/depth map x/y complexity, reducing runtime complexity for other filters.
-
struct
DecimationFilter
¶ - #include <RawStereoDepthConfig.hpp>
Decimation filter. Reduces the depth scene complexity. The filter runs on kernel sizes [2x2] to [8x8] pixels.
Public Types
Public Members
-
std::uint32_t
decimationFactor
= 1¶ Decimation factor. Valid values are 1,2,3,4. Disparity/depth map x/y resolution will be decimated with this value.
-
DecimationMode
decimationMode
= DecimationMode::PIXEL_SKIPPING¶ Decimation algorithm type.
-
std::uint32_t
-
struct
SpatialFilter
¶ - #include <RawStereoDepthConfig.hpp>
1D edge-preserving spatial filter using high-order domain transform.
Public Members
-
bool
enable
= false¶ Whether to enable or disable the filter.
-
std::uint8_t
holeFillingRadius
= 2¶ An in-place heuristic symmetric hole-filling mode applied horizontally during the filter passes. Intended to rectify minor artefacts with minimal performance impact. Search radius for hole filling.
-
float
alpha
= 0.5f¶ The Alpha factor in an exponential moving average with Alpha=1 - no filter. Alpha = 0 - infinite filter. Determines the amount of smoothing.
-
std::int32_t
delta
= 0¶ Step-size boundary. Establishes the threshold used to preserve “edges”. If the disparity value between neighboring pixels exceed the disparity threshold set by this delta parameter, then filtering will be temporarily disabled. Default value 0 means auto: 3 disparity integer levels. In case of subpixel mode it’s 3*number of subpixel levels.
-
std::int32_t
numIterations
= 1¶ Nubmer of iterations over the image in both horizontal and vertical direction.
-
bool
-
struct
SpeckleFilter
¶ - #include <RawStereoDepthConfig.hpp>
Speckle filtering. Removes speckle noise.
-
struct
TemporalFilter
¶ - #include <RawStereoDepthConfig.hpp>
Temporal filtering with optional persistence. More details about the filter can be found here:
Public Types
-
enum
PersistencyMode
¶ Persistency algorithm type.
Values:
-
enumerator
PERSISTENCY_OFF
¶
-
enumerator
VALID_8_OUT_OF_8
¶
-
enumerator
VALID_2_IN_LAST_3
¶
-
enumerator
VALID_2_IN_LAST_4
¶
-
enumerator
VALID_2_OUT_OF_8
¶
-
enumerator
VALID_1_IN_LAST_2
¶
-
enumerator
VALID_1_IN_LAST_5
¶
-
enumerator
VALID_1_IN_LAST_8
¶
-
enumerator
PERSISTENCY_INDEFINITELY
¶
-
enumerator
Public Members
-
bool
enable
= false¶ Whether to enable or disable the filter.
-
PersistencyMode
persistencyMode
= PersistencyMode::VALID_2_IN_LAST_4¶ Persistency mode. If the current disparity/depth value is invalid, it will be replaced by an older value, based on persistency mode.
-
float
alpha
= 0.4f¶ The Alpha factor in an exponential moving average with Alpha=1 - no filter. Alpha = 0 - infinite filter. Determines the extent of the temporal history that should be averaged.
-
std::int32_t
delta
= 0¶ Step-size boundary. Establishes the threshold used to preserve surfaces (edges). If the disparity value between neighboring pixels exceed the disparity threshold set by this delta parameter, then filtering will be temporarily disabled. Default value 0 means auto: 3 disparity integer levels. In case of subpixel mode it’s 3*number of subpixel levels.
-
enum
-
struct
ThresholdFilter
¶ - #include <RawStereoDepthConfig.hpp>
Threshold filtering. Filters out distances outside of a given interval.
-
MedianFilter
-
AlgorithmControl
-
struct
RawSystemInformation
: public dai::RawBuffer¶ - #include <RawSystemInformation.hpp>
System information of device
Memory usage, cpu usage and chip temperature
Public Members
-
MemoryInfo
ddrMemoryUsage
¶ DDR memory usage.
-
MemoryInfo
cmxMemoryUsage
¶ CMX memory usage.
-
MemoryInfo
leonCssMemoryUsage
¶ LeonCss heap usage.
-
MemoryInfo
leonMssMemoryUsage
¶ LeonMss heap usage.
-
ChipTemperature
chipTemperature
¶ Chip temperatures.
-
MemoryInfo
-
struct
RawTrackedFeatures
: public dai::RawBuffer¶ - #include <RawTrackedFeatures.hpp>
RawTrackedFeatures structure.
-
struct
RawTracklets
: public dai::RawBuffer¶ - #include <RawTracklets.hpp>
RawTracklets structure.
-
struct
Rect
¶ - #include <Rect.hpp>
Rect structure
x,y coordinates together with width and height that define a rectangle. Can be either normalized [0,1] or absolute representation.
Public Functions
-
float
area
() const¶ Area (width*height) of the rectangle
-
bool
empty
() const¶ True if rectangle is empty.
-
bool
isNormalized
() const¶ Whether rectangle is normalized (coordinates in [0,1] range) or not.
-
float
-
struct
RotatedRect
¶ - #include <RotatedRect.hpp>
RotatedRect structure.
Public Members
-
float
angle
¶ degrees, increasing clockwise
-
float
-
struct
ScriptProperties
: public dai::PropertiesSerializable<Properties, ScriptProperties>¶ - #include <ScriptProperties.hpp>
Specify ScriptProperties options such as script uri, script name, …
Public Members
-
std::string
scriptUri
= ""¶ Uri which points to actual script
-
std::string
scriptName
= "<script>"¶ Name of script
-
ProcessorType
processor
= ProcessorType::LEON_MSS¶ Which processor should execute the script
-
std::string
-
struct
Size2f
¶ - #include <Size2f.hpp>
Size2f structure
width, height values define the size of the shape/frame
-
struct
SpatialDetectionNetworkProperties
: public dai::PropertiesSerializable<DetectionNetworkProperties, SpatialDetectionNetworkProperties>¶ - #include <SpatialDetectionNetworkProperties.hpp>
Specify properties for SpatialDetectionNetwork
-
struct
SpatialImgDetection
: public dai::ImgDetection¶ - #include <RawSpatialImgDetections.hpp>
SpatialImgDetection structure
Contains image detection results together with spatial location data.
-
class
SpatialImgDetections
: public dai::Buffer - #include <SpatialImgDetections.hpp>
SpatialImgDetections message. Carries detection results together with spatial location data
Public Functions
-
SpatialImgDetections
() Construct SpatialImgDetections message.
Public Members
-
std::vector<SpatialImgDetection> &
detections
Detection results.
-
-
class
SpatialLocationCalculatorConfig
: public dai::Buffer - #include <SpatialLocationCalculatorConfig.hpp>
SpatialLocationCalculatorConfig message. Carries ROI (region of interest) and threshold for depth calculation
Public Functions
-
SpatialLocationCalculatorConfig
() Construct SpatialLocationCalculatorConfig message.
-
void
setROIs
(std::vector<SpatialLocationCalculatorConfigData> ROIs) Set a vector of ROIs as configuration data.
- Parameters
ROIs
: Vector of configuration parameters for ROIs (region of interests)
-
void
addROI
(SpatialLocationCalculatorConfigData &ROI) Add a new ROI to configuration data.
- Parameters
roi
: Configuration parameters for ROI (region of interest)
-
std::vector<SpatialLocationCalculatorConfigData>
getConfigData
() const Retrieve configuration data for SpatialLocationCalculator
- Return
Vector of configuration parameters for ROIs (region of interests)
-
-
struct
SpatialLocationCalculatorConfigData
¶ - #include <RawSpatialLocationCalculatorConfig.hpp>
SpatialLocation configuration data structure.
Public Members
-
SpatialLocationCalculatorConfigThresholds
depthThresholds
¶ Upper and lower thresholds for depth values to take into consideration.
-
SpatialLocationCalculatorAlgorithm
calculationAlgorithm
= SpatialLocationCalculatorAlgorithm::AVERAGE¶ Calculation method used to obtain spatial locations Average - the average of ROI is used for calculation. Min: the minimum value inside ROI is used for calculation. Max: the maximum value inside ROI is used for calculation. Default: average.
-
SpatialLocationCalculatorConfigThresholds
-
struct
SpatialLocationCalculatorConfigThresholds
¶ - #include <RawSpatialLocationCalculatorConfig.hpp>
SpatialLocation configuration thresholds structure
Contains configuration data for lower and upper threshold in millimeters for ROI. Values outside of threshold range will be ignored when calculating spatial coordinates from depth map.
-
class
SpatialLocationCalculatorData
: public dai::Buffer - #include <SpatialLocationCalculatorData.hpp>
SpatialLocationCalculatorData message. Carries spatial information (X,Y,Z) and their configuration parameters
Public Functions
-
SpatialLocationCalculatorData
() Construct SpatialLocationCalculatorData message.
-
std::vector<SpatialLocations> &
getSpatialLocations
() const Retrieve configuration data for SpatialLocationCalculatorData.
- Return
Vector of spatial location data, carrying spatial information (X,Y,Z)
-
-
struct
SpatialLocationCalculatorProperties
: public dai::PropertiesSerializable<Properties, SpatialLocationCalculatorProperties>¶ - #include <SpatialLocationCalculatorProperties.hpp>
Specify properties for SpatialLocationCalculator
-
struct
SpatialLocations
¶ - #include <RawSpatialLocations.hpp>
SpatialLocations structure
Contains configuration data, average depth for the calculated ROI on depth map. Together with spatial coordinates: x,y,z relative to the center of depth map. Units are in millimeters.
Public Members
-
SpatialLocationCalculatorConfigData
config
¶ Configuration for selected ROI
-
float
depthAverage
¶ Average of depth values inside the ROI between the specified thresholds in config
-
std::uint16_t
depthMin
¶ Minimum of depth values inside the ROI between the specified thresholds in config
-
std::uint16_t
depthMax
¶ Maximum of depth values inside the ROI between the specified thresholds in config
-
std::uint32_t
depthAveragePixelCount
¶ Number of depth values used to calculate depthAverage based on config
-
SpatialLocationCalculatorConfigData
-
struct
SPIInProperties
: public dai::PropertiesSerializable<Properties, SPIInProperties>¶ - #include <SPIInProperties.hpp>
Properties for SPIIn node
-
struct
SPIOutProperties
: public dai::PropertiesSerializable<Properties, SPIOutProperties>¶ - #include <SPIOutProperties.hpp>
Specify properties for SPIOut node
-
class
StereoDepthConfig
: public dai::Buffer - #include <StereoDepthConfig.hpp>
StereoDepthConfig message.
Public Functions
-
StereoDepthConfig
() Construct StereoDepthConfig message.
-
void
setDepthAlign
(AlgorithmControl::DepthAlign align) - Parameters
align
: Set the disparity/depth alignment: centered (between the ‘left’ and ‘right’ inputs), or from the perspective of a rectified output stream
-
void
setConfidenceThreshold
(int confThr) Confidence threshold for disparity calculation
- Parameters
confThr
: Confidence threshold value 0..255
-
int
getConfidenceThreshold
() const Get confidence threshold for disparity calculation
-
void
setMedianFilter
(MedianFilter median) - Parameters
median
: Set kernel size for disparity/depth median filtering, or disable
-
MedianFilter
getMedianFilter
() const Get median filter setting
-
void
setBilateralFilterSigma
(uint16_t sigma) A larger value of the parameter means that farther colors within the pixel neighborhood will be mixed together, resulting in larger areas of semi-equal color.
- Parameters
sigma
: Set sigma value for 5x5 bilateral filter. 0..65535
-
uint16_t
getBilateralFilterSigma
() const Get sigma value for 5x5 bilateral filter
-
void
setLeftRightCheckThreshold
(int threshold) - Parameters
threshold
: Set threshold for left-right, right-left disparity map combine, 0..255
-
int
getLeftRightCheckThreshold
() const Get threshold for left-right check combine
-
void
setLeftRightCheck
(bool enable) Computes and combines disparities in both L-R and R-L directions, and combine them.
For better occlusion handling, discarding invalid disparity values
-
void
setExtendedDisparity
(bool enable) Disparity range increased from 95 to 190, combined from full resolution and downscaled images. Suitable for short range objects
-
void
setSubpixel
(bool enable) Computes disparity with sub-pixel interpolation (5 fractional bits).
Suitable for long range. Currently incompatible with extended disparity
-
float
getMaxDisparity
() const Useful for normalization of the disparity map.
- Return
Maximum disparity value that the node can return
-
void
set
(dai::RawStereoDepthConfig config) Set explicit configuration.
- Parameters
config
: Explicit configuration
-
dai::RawStereoDepthConfig
get
() const Retrieve configuration data for StereoDepth.
- Return
config for stereo depth algorithm
-
-
struct
StereoDepthProperties
: public dai::PropertiesSerializable<Properties, StereoDepthProperties>¶ - #include <StereoDepthProperties.hpp>
Specify properties for StereoDepth
Public Members
-
RawStereoDepthConfig
initialConfig
¶ Initial stereo config.
-
CameraBoardSocket
depthAlignCamera
= CameraBoardSocket::AUTO¶ Which camera to align disparity/depth to. When configured (not AUTO), takes precedence over ‘depthAlign’
-
std::int32_t
rectifyEdgeFillColor
= -1¶ Fill color for missing data at frame edges - grayscale 0..255, or -1 to replicate pixels
-
tl::optional<std::int32_t>
width
¶ Input frame width. Optional (taken from MonoCamera nodes if they exist)
-
tl::optional<std::int32_t>
height
¶ Input frame height. Optional (taken from MonoCamera nodes if they exist)
-
tl::optional<std::int32_t>
outWidth
¶ Output disparity/depth width. Currently only used when aligning to RGB
-
tl::optional<std::int32_t>
outHeight
¶ Output disparity/depth height. Currently only used when aligning to RGB
-
bool
outKeepAspectRatio
= true¶ Whether to keep aspect ratio of the input (rectified) or not
-
RectificationMesh
mesh
¶ Specify a direct warp mesh to be used for rectification, instead of intrinsics + extrinsic matrices
-
bool
enableRuntimeStereoModeSwitch
= false¶ Whether to enable switching stereo modes at runtime or not. E.g. standard to subpixel, standard+LR-check to subpixel + LR-check. Note: It will allocate resources for worst cases scenario, should be enabled only if dynamic mode switch is required. Default value: false.
-
int
numFramesPool
= 3¶ Num frames in output pool.
-
std::int32_t
numPostProcessingShaves
= AUTO¶ Number of shaves reserved for stereo depth post processing. Post processing can use multiple shaves to increase performance. -1 means auto, resources will be allocated based on enabled filters. 0 means that it will reuse the shave assigned for main stereo algorithm. For optimal performance it’s recommended to allocate more than 0, so post processing will run in parallel with main stereo algorithm.
-
std::int32_t
numPostProcessingMemorySlices
= AUTO¶ Number of memory slices reserved for stereo depth post processing. -1 means auto, memory will be allocated based on initial stereo settings and number of shaves. 0 means that it will reuse the memory slices assigned for main stereo algorithm. For optimal performance it’s recommended to allocate more than 0, so post processing will run in parallel with main stereo algorithm.
-
struct
RectificationMesh
¶ Public Members
-
std::string
meshLeftUri
¶ Uri which points to the mesh array for ‘left’ input rectification
-
std::string
meshRightUri
¶ Uri which points to the mesh array for ‘right’ input rectification
-
tl::optional<std::uint32_t>
meshSize
¶ Mesh array size in bytes, for each of ‘left’ and ‘right’ (need to match)
-
uint16_t
stepWidth
= 16¶ Distance between mesh points, in the horizontal direction
-
uint16_t
stepHeight
= 16¶ Distance between mesh points, in the vertical direction
-
std::string
-
RawStereoDepthConfig
-
struct
StereoRectification
¶ - #include <StereoRectification.hpp>
StereoRectification structure.
-
class
StreamMessageParser
¶
-
class
SystemInformation
: public dai::Buffer - #include <SystemInformation.hpp>
SystemInformation message. Carries memory usage, cpu usage and chip temperatures.
Public Functions
-
SystemInformation
() Construct SystemInformation message.
-
-
struct
SystemLoggerProperties
: public dai::PropertiesSerializable<Properties, SystemLoggerProperties>¶ - #include <SystemLoggerProperties.hpp>
SystemLoggerProperties structure
Public Members
-
float
rateHz
= 1.0f¶ Rate at which the messages are going to be sent in hertz
-
float
-
struct
TensorInfo
¶ - #include <RawNNData.hpp>
TensorInfo structure.
-
struct
TrackedFeature
¶ - #include <RawTrackedFeatures.hpp>
TrackedFeature structure
-
class
TrackedFeatures
: public dai::Buffer - #include <TrackedFeatures.hpp>
TrackedFeatures message. Carries position (X, Y) of tracked features and their ID.
Public Functions
-
TrackedFeatures
() Construct TrackedFeatures message.
-
-
struct
Tracklet
¶ - #include <RawTracklets.hpp>
Tracklet structure
Contains tracklets from object tracker output.
Public Members
-
std::int32_t
age
¶ Number of frames it is being tracked for.
-
TrackingStatus
status
¶ Status of tracklet.
-
ImgDetection
srcImgDetection
¶ Image detection that is tracked.
-
std::int32_t
-
class
Tracklets
: public dai::Buffer - #include <Tracklets.hpp>
Tracklets message. Carries object tracking information.
Public Functions
-
Tracklets
() Construct Tracklets message.
-
-
struct
VideoEncoderProperties
: public dai::PropertiesSerializable<Properties, VideoEncoderProperties>¶ - #include <VideoEncoderProperties.hpp>
Specify properties for VideoEncoder such as profile, bitrate, …
Public Types
Public Members
-
std::int32_t
bitrate
= 0¶ Specifies preferred bitrate (in bit/s) of compressed output bitstream in CBR mode
“0” for automatic computation, based on input resolution and FPS: 720p30: 4Mbps, 1080p30: 8.5Mbps, 1440p30: 14Mbps, 2160p30: 20Mbps
-
std::int32_t
keyframeFrequency
= 30¶ Every x number of frames a keyframe will be inserted
-
std::int32_t
maxBitrate
= 0¶ Specifies maximum bitrate (in bit/s) of compressed output bitstream in CBR mode
“0” to follow
bitrate
setting
-
std::int32_t
numBFrames
= 0¶ Specifies number of B frames to be inserted
-
std::uint32_t
numFramesPool
= 0¶ This options specifies how many frames are available in this node’s pool. Helps when receiver is slow at consuming.
Value “0” indicates automatic number of frames assignment
-
Profile
profile
= Profile::H264_BASELINE¶ Encoding profile, H264, H265 or MJPEG
-
std::int32_t
quality
= 80¶ Value between 0-100% (approximates quality)
-
bool
lossless
= false¶ Lossless mode ([M]JPEG only)
-
RateControlMode
rateCtrlMode
= RateControlMode::CBR¶ Rate control mode specifies if constant or variable bitrate should be used (H264 / H265)
-
float
frameRate
= 30.0f¶ Frame rate
-
std::int32_t
-
class
XLinkConnection
¶ - #include <XLinkConnection.hpp>
Represents connection between host and device over XLink protocol
-
struct
XLinkError
: public runtime_error¶ Subclassed by dai::XLinkReadError, dai::XLinkWriteError
-
struct
XLinkInProperties
: public dai::PropertiesSerializable<Properties, XLinkInProperties>¶ - #include <XLinkInProperties.hpp>
Specify properties for XLinkIn such as stream name, …
-
struct
XLinkOutProperties
: public dai::PropertiesSerializable<Properties, XLinkOutProperties>¶ - #include <XLinkOutProperties.hpp>
Specify properties for XLinkOut such as stream name, …
-
struct
XLinkReadError
: public dai::XLinkError¶
-
class
XLinkStream
¶
-
struct
XLinkWriteError
: public dai::XLinkError¶
-
namespace
bootloader
¶ Enums
Functions
-
DEPTHAI_BOOTLOADER_NLOHMANN_DEFINE_TYPE_OPTIONAL_NON_INTRUSIVE
(NetworkConfig, timeoutMs, ipv4, ipv4Mask, ipv4Gateway, ipv4Dns, ipv4DnsAlt, staticIpv4, ipv6, ipv6Prefix, ipv6Gateway, ipv6Dns, ipv6DnsAlt, staticIpv6, mac)¶
Variables
-
constexpr const char *
XLINK_CHANNEL_BOOTLOADER
= "__bootloader"¶
-
constexpr const char *
XLINK_CHANNEL_WATCHDOG
= "__watchdog"¶
-
constexpr std::uint32_t
XLINK_STREAM_MAX_SIZE
= 5 * 1024 * 1024¶
-
constexpr const std::chrono::milliseconds
XLINK_WATCHDOG_TIMEOUT
= {1500}¶
-
struct
Config
¶ Subclassed by dai::DeviceBootloader::Config
-
struct
NetworkBootloaderStructure
: public dai::bootloader::Structure¶
-
struct
NetworkConfig
¶ Public Members
-
int
timeoutMs
= 30000¶ If timeout < 0 - waits forever if timeout == 0 - no timeout if timeout > 0 - waits timeout milliseconds
-
int
-
struct
Structure
¶ Subclassed by dai::bootloader::NetworkBootloaderStructure, dai::bootloader::UsbBootloaderStructure
-
struct
UsbBootloaderStructure
: public dai::bootloader::Structure¶
-
struct
UsbConfig
¶
-
namespace
request
¶ Enums
-
enum
Command
¶ Values:
-
enumerator
USB_ROM_BOOT
¶
-
enumerator
BOOT_APPLICATION
¶
-
enumerator
UPDATE_FLASH
¶
-
enumerator
GET_BOOTLOADER_VERSION
¶
-
enumerator
BOOT_MEMORY
¶
-
enumerator
UPDATE_FLASH_EX
¶
-
enumerator
UPDATE_FLASH_EX_2
¶
-
enumerator
NO_OP
¶
-
enumerator
GET_BOOTLOADER_TYPE
¶
-
enumerator
SET_BOOTLOADER_CONFIG
¶
-
enumerator
GET_BOOTLOADER_CONFIG
¶
-
enumerator
BOOTLOADER_MEMORY
¶
-
enumerator
-
struct
BaseRequest
¶ Subclassed by dai::bootloader::request::BootApplication, dai::bootloader::request::BootloaderMemory, dai::bootloader::request::BootMemory, dai::bootloader::request::GetBootloaderConfig, dai::bootloader::request::GetBootloaderType, dai::bootloader::request::GetBootloaderVersion, dai::bootloader::request::SetBootloaderConfig, dai::bootloader::request::UpdateFlash, dai::bootloader::request::UpdateFlashEx, dai::bootloader::request::UpdateFlashEx2, dai::bootloader::request::UsbRomBoot
-
struct
BootApplication
: public dai::bootloader::request::BaseRequest¶
-
struct
BootloaderMemory
: public dai::bootloader::request::BaseRequest¶
-
struct
BootMemory
: public dai::bootloader::request::BaseRequest¶
-
struct
GetBootloaderConfig
: public dai::bootloader::request::BaseRequest¶
-
struct
GetBootloaderType
: public dai::bootloader::request::BaseRequest¶
-
struct
GetBootloaderVersion
: public dai::bootloader::request::BaseRequest¶
-
struct
SetBootloaderConfig
: public dai::bootloader::request::BaseRequest¶
-
struct
UpdateFlash
: public dai::bootloader::request::BaseRequest¶
-
struct
UpdateFlashEx
: public dai::bootloader::request::BaseRequest¶
-
struct
UpdateFlashEx2
: public dai::bootloader::request::BaseRequest¶
-
struct
UsbRomBoot
: public dai::bootloader::request::BaseRequest¶
-
enum
-
namespace
response
¶ Enums
-
struct
BaseResponse
¶ Subclassed by dai::bootloader::response::BootApplication, dai::bootloader::response::BootloaderMemory, dai::bootloader::response::BootloaderType, dai::bootloader::response::BootloaderVersion, dai::bootloader::response::FlashComplete, dai::bootloader::response::FlashStatusUpdate, dai::bootloader::response::GetBootloaderConfig
-
struct
BootApplication
: public dai::bootloader::response::BaseResponse¶
-
struct
BootloaderMemory
: public dai::bootloader::response::BaseResponse¶
-
struct
BootloaderType
: public dai::bootloader::response::BaseResponse¶
-
struct
BootloaderVersion
: public dai::bootloader::response::BaseResponse¶
-
struct
FlashComplete
: public dai::bootloader::response::BaseResponse¶
-
struct
FlashStatusUpdate
: public dai::bootloader::response::BaseResponse¶
-
struct
GetBootloaderConfig
: public dai::bootloader::response::BaseResponse¶
-
struct
-
-
namespace
device
¶ Variables
-
constexpr const char *
XLINK_CHANNEL_PIPELINE_CONFIG
= "__pipeline_config"¶
-
constexpr const char *
XLINK_CHANNEL_MAIN_RPC
= "__rpc_main"¶
-
constexpr const char *
XLINK_CHANNEL_TIMESYNC
= "__timesync"¶
-
constexpr const char *
XLINK_CHANNEL_LOG
= "__log"¶
-
constexpr const char *
XLINK_CHANNEL_WATCHDOG
= "__watchdog"¶
-
constexpr std::uint32_t
XLINK_USB_BUFFER_MAX_SIZE
= 5 * 1024 * 1024¶
-
constexpr const std::chrono::milliseconds
XLINK_WATCHDOG_TIMEOUT
= {1500}¶
-
constexpr const int
XLINK_MESSAGE_METADATA_MAX_SIZE
= 50 * 1024¶
-
constexpr const char *
-
namespace
node
¶ -
class
ColorCamera
: public dai::NodeCRTP<Node, ColorCamera, ColorCameraProperties> - #include <ColorCamera.hpp>
ColorCamera node. For use with color sensors.
Public Functions
Constructs ColorCamera node.
-
int
getScaledSize
(int input, int num, int denom) const Computes the scaled size given numerator and denominator
-
void
setBoardSocket
(CameraBoardSocket boardSocket) Specify which board socket to use
- Parameters
boardSocket
: Board socket to use
-
CameraBoardSocket
getBoardSocket
() const Retrieves which board socket to use
- Return
Board socket to use
-
void
setCamId
(int64_t id) Set which color camera to use.
-
int64_t
getCamId
() const Get which color camera to use.
-
void
setImageOrientation
(CameraImageOrientation imageOrientation) Set camera image orientation.
-
CameraImageOrientation
getImageOrientation
() const Get camera image orientation.
-
void
setColorOrder
(ColorCameraProperties::ColorOrder colorOrder) Set color order of preview output images. RGB or BGR.
-
ColorCameraProperties::ColorOrder
getColorOrder
() const Get color order of preview output frames. RGB or BGR.
-
void
setInterleaved
(bool interleaved) Set planar or interleaved data of preview output frames.
-
bool
getInterleaved
() const Get planar or interleaved data of preview output frames.
-
void
setFp16
(bool fp16) Set fp16 (0..255) data type of preview output frames.
-
bool
getFp16
() const Get fp16 (0..255) data of preview output frames.
-
void
setPreviewSize
(int width, int height) Set preview output size.
-
void
setPreviewSize
(std::tuple<int, int> size) Set preview output size, as a tuple <width, height>
-
void
setVideoSize
(int width, int height) Set video output size.
-
void
setVideoSize
(std::tuple<int, int> size) Set video output size, as a tuple <width, height>
-
void
setStillSize
(int width, int height) Set still output size.
-
void
setStillSize
(std::tuple<int, int> size) Set still output size, as a tuple <width, height>
-
void
setResolution
(Properties::SensorResolution resolution) Set sensor resolution.
-
Properties::SensorResolution
getResolution
() const Get sensor resolution.
-
void
setIspScale
(int numerator, int denominator) Set ‘isp’ output scaling (numerator/denominator), preserving the aspect ratio. The fraction numerator/denominator is simplified first to a irreducible form, then a set of hardware scaler constraints applies: max numerator = 16, max denominator = 63
-
void
setIspScale
(std::tuple<int, int> scale) Set ‘isp’ output scaling, as a tuple <numerator, denominator>
-
void
setIspScale
(int horizNum, int horizDenom, int vertNum, int vertDenom) Set ‘isp’ output scaling, per each direction. If the horizontal scaling factor (horizNum/horizDen) is different than the vertical scaling factor (vertNum/vertDen), a distorted (stretched or squished) image is generated
-
void
setIspScale
(std::tuple<int, int> horizScale, std::tuple<int, int> vertScale) Set ‘isp’ output scaling, per each direction, as <numerator, denominator> tuples.
-
void
setFps
(float fps) Set rate at which camera should produce frames
- Parameters
fps
: Rate in frames per second
-
float
getFps
() const Get rate at which camera should produce frames
- Return
Rate in frames per second
-
std::tuple<int, int>
getPreviewSize
() const Get preview size as tuple.
-
int
getPreviewWidth
() const Get preview width.
-
int
getPreviewHeight
() const Get preview height.
-
std::tuple<int, int>
getVideoSize
() const Get video size as tuple.
-
int
getVideoWidth
() const Get video width.
-
int
getVideoHeight
() const Get video height.
-
std::tuple<int, int>
getStillSize
() const Get still size as tuple.
-
int
getStillWidth
() const Get still width.
-
int
getStillHeight
() const Get still height.
-
std::tuple<int, int>
getResolutionSize
() const Get sensor resolution as size.
-
int
getResolutionWidth
() const Get sensor resolution width.
-
int
getResolutionHeight
() const Get sensor resolution height.
-
std::tuple<int, int>
getIspSize
() const Get ‘isp’ output resolution as size, after scaling.
-
int
getIspWidth
() const Get ‘isp’ output width.
-
int
getIspHeight
() const Get ‘isp’ output height.
-
void
sensorCenterCrop
() Specify sensor center crop. Resolution size / video size
-
void
setSensorCrop
(float x, float y) Specifies sensor crop rectangle
- Parameters
x
: Top left X coordinatey
: Top left Y coordinate
-
std::tuple<float, float>
getSensorCrop
() const - Return
Sensor top left crop coordinates
-
float
getSensorCropX
() const Get sensor top left x crop coordinate.
-
float
getSensorCropY
() const Get sensor top left y crop coordinate.
-
void
setWaitForConfigInput
(bool wait) Specify to wait until inputConfig receives a configuration message, before sending out a frame.
- Parameters
wait
: True to wait for inputConfig message, false otherwise
-
bool
getWaitForConfigInput
() const - See
- Return
True if wait for inputConfig message, false otherwise
-
void
setPreviewKeepAspectRatio
(bool keep) Specifies whether preview output should preserve aspect ratio, after downscaling from video size or not.
- Parameters
keep
: If true, a larger crop region will be considered to still be able to create the final image in the specified aspect ratio. Otherwise video size is resized to fit preview size
-
bool
getPreviewKeepAspectRatio
() - See
- Return
Preview keep aspect ratio option
Public Members
-
CameraControl
initialControl
Initial control options to apply to sensor
-
Input
inputConfig
= {*this, "inputConfig", Input::Type::SReceiver, false, 8, {{DatatypeEnum::ImageManipConfig, false}}} Input for ImageManipConfig message, which can modify crop parameters in runtime
Default queue is non-blocking with size 8
-
Input
inputControl
= {*this, "inputControl", Input::Type::SReceiver, true, 8, {{DatatypeEnum::CameraControl, false}}} Input for CameraControl message, which can modify camera parameters in runtime
Default queue is blocking with size 8
-
Output
video
= {*this, "video", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Outputs ImgFrame message that carries NV12 encoded (YUV420, UV plane interleaved) frame data.
Suitable for use with VideoEncoder node
-
Output
preview
= {*this, "preview", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Outputs ImgFrame message that carries BGR/RGB planar/interleaved encoded frame data.
Suitable for use with NeuralNetwork node
-
Output
still
= {*this, "still", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Outputs ImgFrame message that carries NV12 encoded (YUV420, UV plane interleaved) frame data.
The message is sent only when a CameraControl message arrives to inputControl with captureStill command set.
-
Output
isp
= {*this, "isp", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Outputs ImgFrame message that carries YUV420 planar (I420/IYUV) frame data.
Generated by the ISP engine, and the source for the ‘video’, ‘preview’ and ‘still’ outputs
-
Output
raw
= {*this, "raw", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Outputs ImgFrame message that carries RAW10-packed (MIPI CSI-2 format) frame data.
Captured directly from the camera sensor, and the source for the ‘isp’ output.
-
class
DetectionNetwork
: public dai::NodeCRTP<NeuralNetwork, DetectionNetwork, DetectionNetworkProperties>¶ - #include <DetectionNetwork.hpp>
DetectionNetwork, base for different network specializations.
Public Functions
-
void
setConfidenceThreshold
(float thresh)¶ Specifies confidence threshold at which to filter the rest of the detections.
- Parameters
thresh
: Detection confidence must be greater than specified threshold to be added to the list
-
float
getConfidenceThreshold
() const¶ Retrieves threshold at which to filter the rest of the detections.
- Return
Detection confidence
Public Members
-
Output
out
= {*this, "out", Output::Type::MSender, {{DatatypeEnum::ImgDetections, false}}}¶ Outputs ImgDetections message that carries parsed detection results. Overrides NeuralNetwork ‘out’ with ImgDetections output message type.
-
void
-
class
EdgeDetector
: public dai::NodeCRTP<Node, EdgeDetector, EdgeDetectorProperties> - #include <EdgeDetector.hpp>
EdgeDetector node. Performs edge detection using 3x3 Sobel filter.
Public Functions
-
void
setWaitForConfigInput
(bool wait) Specify whether or not wait until configuration message arrives to inputConfig Input.
- Parameters
wait
: True to wait for configuration message, false otherwise.
-
bool
getWaitForConfigInput
() const - See
- Return
True if wait for inputConfig message, false otherwise
-
void
setNumFramesPool
(int numFramesPool) Specify number of frames in pool.
- Parameters
numFramesPool
: How many frames should the pool have
-
void
setMaxOutputFrameSize
(int maxFrameSize) Specify maximum size of output image.
- Parameters
maxFrameSize
: Maximum frame size in bytes
Public Members
-
EdgeDetectorConfig
initialConfig
Initial config to use for edge detection.
-
Input
inputConfig
= {*this, "inputConfig", Input::Type::SReceiver, false, 4, {{DatatypeEnum::EdgeDetectorConfig, false}}} Input EdgeDetectorConfig message with ability to modify parameters in runtime. Default queue is non-blocking with size 4.
-
Input
inputImage
= {*this, "inputImage", Input::Type::SReceiver, false, 4, true, {{DatatypeEnum::ImgFrame, false}}} Input image on which edge detection is performed. Default queue is non-blocking with size 4.
-
Output
outputImage
= {*this, "outputImage", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Outputs image frame with detected edges
-
Output
passthroughInputImage
= {*this, "passthroughInputImage", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Passthrough message on which the calculation was performed.
-
void
-
class
FeatureTracker
: public dai::NodeCRTP<Node, FeatureTracker, FeatureTrackerProperties> - #include <FeatureTracker.hpp>
FeatureTracker node. Performs feature tracking and reidentification using motion estimation between 2 consecutive frames.
Public Functions
-
void
setWaitForConfigInput
(bool wait) Specify whether or not wait until configuration message arrives to inputConfig Input.
- Parameters
wait
: True to wait for configuration message, false otherwise.
-
bool
getWaitForConfigInput
() const - See
- Return
True if wait for inputConfig message, false otherwise
-
void
setHardwareResources
(int numShaves, int numMemorySlices) Specify allocated hardware resources for feature tracking. 2 shaves/memory slices are required for optical flow, 1 for corner detection only.
- Parameters
numShaves
: Number of shaves. Maximum 2.numMemorySlices
: Number of memory slices. Maximum 2.
Public Members
-
FeatureTrackerConfig
initialConfig
Initial config to use for feature tracking.
-
Input
inputConfig
= {*this, "inputConfig", Input::Type::SReceiver, false, 4, {{DatatypeEnum::FeatureTrackerConfig, false}}} Input FeatureTrackerConfig message with ability to modify parameters in runtime. Default queue is non-blocking with size 4.
-
Input
inputImage
= {*this, "inputImage", Input::Type::SReceiver, false, 4, true, {{DatatypeEnum::ImgFrame, false}}} Input message with frame data on which feature tracking is performed. Default queue is non-blocking with size 4.
-
Output
outputFeatures
= {*this, "outputFeatures", Output::Type::MSender, {{DatatypeEnum::TrackedFeatures, false}}} Outputs TrackedFeatures message that carries tracked features results.
-
Output
passthroughInputImage
= {*this, "passthroughInputImage", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Passthrough message on which the calculation was performed. Suitable for when input queue is set to non-blocking behavior.
-
void
-
class
ImageManip
: public dai::NodeCRTP<Node, ImageManip, ImageManipProperties> - #include <ImageManip.hpp>
ImageManip node. Capability to crop, resize, warp, … incoming image frames.
Public Functions
-
void
setWaitForConfigInput
(bool wait) Specify whether or not wait until configuration message arrives to inputConfig Input.
- Parameters
wait
: True to wait for configuration message, false otherwise.
-
bool
getWaitForConfigInput
() const - See
- Return
True if wait for inputConfig message, false otherwise
-
void
setNumFramesPool
(int numFramesPool) Specify number of frames in pool.
- Parameters
numFramesPool
: How many frames should the pool have
-
void
setMaxOutputFrameSize
(int maxFrameSize) Specify maximum size of output image.
- Parameters
maxFrameSize
: Maximum frame size in bytes
Public Members
-
ImageManipConfig
initialConfig
Initial config to use when manipulating frames
-
Input
inputConfig
= {*this, "inputConfig", Input::Type::SReceiver, true, 8, {{DatatypeEnum::ImageManipConfig, true}}} Input ImageManipConfig message with ability to modify parameters in runtime Default queue is blocking with size 8
-
Input
inputImage
= {*this, "inputImage", Input::Type::SReceiver, true, 8, true, {{DatatypeEnum::ImgFrame, true}}} Input image to be modified Default queue is blocking with size 8
-
Output
out
= {*this, "out", Output::Type::MSender, {{DatatypeEnum::ImgFrame, true}}} Outputs ImgFrame message that carries modified image.
-
void
-
class
IMU
: public dai::NodeCRTP<Node, IMU, IMUProperties> - #include <IMU.hpp>
IMU node for BNO08X.
Public Functions
Constructs IMU node.
-
void
enableIMUSensor
(IMUSensorConfig sensorConfig) Enable a new IMU sensor with explicit configuration
-
void
enableIMUSensor
(const std::vector<IMUSensorConfig> &sensorConfigs) Enable a list of IMU sensors with explicit configuration
-
void
enableIMUSensor
(IMUSensor sensor, uint32_t reportRate) Enable a new IMU sensor with default configuration
-
void
enableIMUSensor
(const std::vector<IMUSensor> &sensors, uint32_t reportRate) Enable a list of IMU sensors with default configuration
-
void
setBatchReportThreshold
(std::int32_t batchReportThreshold) Above this packet threshold data will be sent to host, if queue is not blocked
-
std::int32_t
getBatchReportThreshold
() const Above this packet threshold data will be sent to host, if queue is not blocked
-
void
setMaxBatchReports
(std::int32_t maxBatchReports) Maximum number of IMU packets in a batch report
-
std::int32_t
getMaxBatchReports
() const Maximum number of IMU packets in a batch report
Public Members
-
Output
out
= {*this, "out", Output::Type::MSender, {{DatatypeEnum::IMUData, false}}}
-
class
MobileNetDetectionNetwork
: public dai::NodeCRTP<DetectionNetwork, MobileNetDetectionNetwork, DetectionNetworkProperties> - #include <DetectionNetwork.hpp>
MobileNetDetectionNetwork node. Parses MobileNet results.
-
class
MobileNetSpatialDetectionNetwork
: public dai::NodeCRTP<SpatialDetectionNetwork, MobileNetSpatialDetectionNetwork, SpatialDetectionNetworkProperties> - #include <SpatialDetectionNetwork.hpp>
MobileNetSpatialDetectionNetwork node. Mobilenet-SSD based network with spatial location data.
-
class
MonoCamera
: public dai::NodeCRTP<Node, MonoCamera, MonoCameraProperties> - #include <MonoCamera.hpp>
MonoCamera node. For use with grayscale sensors.
Public Functions
-
void
setBoardSocket
(CameraBoardSocket boardSocket) Specify which board socket to use
- Parameters
boardSocket
: Board socket to use
-
CameraBoardSocket
getBoardSocket
() const Retrieves which board socket to use
- Return
Board socket to use
-
void
setImageOrientation
(CameraImageOrientation imageOrientation) Set camera image orientation.
-
CameraImageOrientation
getImageOrientation
() const Get camera image orientation.
-
void
setResolution
(Properties::SensorResolution resolution) Set sensor resolution.
-
Properties::SensorResolution
getResolution
() const Get sensor resolution.
-
void
setFps
(float fps) Set rate at which camera should produce frames
- Parameters
fps
: Rate in frames per second
-
float
getFps
() const Get rate at which camera should produce frames
- Return
Rate in frames per second
-
std::tuple<int, int>
getResolutionSize
() const Get sensor resolution as size.
-
int
getResolutionWidth
() const Get sensor resolution width.
-
int
getResolutionHeight
() const Get sensor resolution height.
Public Members
-
CameraControl
initialControl
Initial control options to apply to sensor
-
Input
inputControl
= {*this, "inputControl", Input::Type::SReceiver, true, 8, {{DatatypeEnum::CameraControl, false}}} Input for CameraControl message, which can modify camera parameters in runtime Default queue is blocking with size 8
-
Output
out
= {*this, "out", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Outputs ImgFrame message that carries RAW8 encoded (grayscale) frame data.
Suitable for use StereoDepth node. Processed by ISP
-
Output
raw
= {*this, "raw", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Outputs ImgFrame message that carries RAW10-packed (MIPI CSI-2 format) frame data.
Captured directly from the camera sensor
-
void
-
class
NeuralNetwork
: public dai::NodeCRTP<Node, NeuralNetwork, NeuralNetworkProperties> - #include <NeuralNetwork.hpp>
NeuralNetwork node. Runs a neural inference on input data.
Public Functions
-
void
setBlobPath
(const std::string &path) Load network blob into assets and use once pipeline is started.
Throws if file doesn’t exist or isn’t a valid network blob.
- Parameters
path
: Path to network blob
-
void
setNumPoolFrames
(int numFrames) Specifies how many frames will be available in the pool
- Parameters
numFrames
: How many frames will pool have
-
void
setNumInferenceThreads
(int numThreads) How many threads should the node use to run the network.
- Parameters
numThreads
: Number of threads to dedicate to this node
-
void
setNumNCEPerInferenceThread
(int numNCEPerThread) How many Neural Compute Engines should a single thread use for inference
- Parameters
numNCEPerThread
: Number of NCE per thread
-
int
getNumInferenceThreads
() How many inference threads will be used to run the network
- Return
Number of threads, 0, 1 or 2. Zero means AUTO
Public Members
-
Input
input
= {*this, "in", Input::Type::SReceiver, true, 5, true, {{DatatypeEnum::Buffer, true}}} Input message with data to be inferred upon Default queue is blocking with size 5
-
Output
out
= {*this, "out", Output::Type::MSender, {{DatatypeEnum::NNData, false}}} Outputs NNData message that carries inference results
-
Output
passthrough
= {*this, "passthrough", Output::Type::MSender, {{DatatypeEnum::Buffer, true}}} Passthrough message on which the inference was performed.
Suitable for when input queue is set to non-blocking behavior.
-
InputMap
inputs
Inputs mapped to network inputs. Useful for infering from separate data sources Default input is non-blocking with queue size 1 and waits for messages
-
OutputMap
passthroughs
Passthroughs which correspond to specified input
-
void
-
class
ObjectTracker
: public dai::NodeCRTP<Node, ObjectTracker, ObjectTrackerProperties> - #include <ObjectTracker.hpp>
ObjectTracker node. Performs object tracking using Kalman filter and hungarian algorithm.
Public Functions
-
void
setTrackerThreshold
(float threshold) Specify tracker threshold.
- Parameters
threshold
: Above this threshold the detected objects will be tracked. Default 0, all image detections are tracked.
-
void
setMaxObjectsToTrack
(std::int32_t maxObjectsToTrack) Specify maximum number of object to track.
- Parameters
maxObjectsToTrack
: Maximum number of object to track. Maximum 60.
-
void
setDetectionLabelsToTrack
(std::vector<std::uint32_t> labels) Specify detection labels to track.
- Parameters
labels
: Detection labels to track. Default every label is tracked from image detection network output.
-
void
setTrackerType
(TrackerType type) Specify tracker type algorithm.
- Parameters
type
: Tracker type.
-
void
setTrackerIdAssignmentPolicy
(TrackerIdAssignmentPolicy type) Specify tracker ID assignment policy.
- Parameters
type
: Tracker ID assignment policy.
Public Members
-
Input
inputTrackerFrame
= {*this, "inputTrackerFrame", Input::Type::SReceiver, false, 4, true, {{DatatypeEnum::ImgFrame, false}}} Input ImgFrame message on which tracking will be performed. RGBp, BGRp, NV12, YUV420p types are supported. Default queue is non-blocking with size 4.
-
Input
inputDetectionFrame
= {*this, "inputDetectionFrame", Input::Type::SReceiver, false, 4, true, {{DatatypeEnum::ImgFrame, false}}} Input ImgFrame message on which object detection was performed. Default queue is non-blocking with size 4.
-
Input
inputDetections
= {*this, "inputDetections", Input::Type::SReceiver, false, 4, true, {{DatatypeEnum::ImgDetections, true}}} Input message with image detection from neural network. Default queue is non-blocking with size 4.
-
Output
out
= {*this, "out", Output::Type::MSender, {{DatatypeEnum::Tracklets, false}}} Outputs Tracklets message that carries object tracking results.
-
Output
passthroughTrackerFrame
= {*this, "passthroughTrackerFrame", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Passthrough ImgFrame message on which tracking was performed. Suitable for when input queue is set to non-blocking behavior.
-
Output
passthroughDetectionFrame
= {*this, "passthroughDetectionFrame", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Passthrough ImgFrame message on which object detection was performed. Suitable for when input queue is set to non-blocking behavior.
-
Output
passthroughDetections
= {*this, "passthroughDetections", Output::Type::MSender, {{DatatypeEnum::ImgDetections, true}}} Passthrough image detections message from neural network output. Suitable for when input queue is set to non-blocking behavior.
-
void
-
class
Script
: public dai::NodeCRTP<Node, Script, ScriptProperties> Public Functions
-
void
setScriptPath
(const std::string &path) Specify local filesystem path to load the script
-
void
setScript
(const std::string &script, const std::string &name = "") Sets script data to be interpreted
- Parameters
script
: Script string to be interpretedname
: Optionally set a name of this script
-
void
setScript
(const std::vector<std::uint8_t> &data, const std::string &name = "") Sets script data to be interpreted
- Parameters
data
: Binary data that represents the script to be interpretedname
: Optionally set a name of this script
-
std::string
getScriptPath
() const Get filesystem path from where script was loaded. If script wasn’t set by path, function returns empty string
-
std::string
getScriptName
() const Get filesystem path from where script was loaded. If script wasn’t set by path, function returns empty string
-
void
setProcessor
(ProcessorType type) Set on which processor the script should run
- Parameters
type
: Processor type - Leon CSS or Leon MSS
-
ProcessorType
getProcessor
() const Get on which processor the script should run
- Return
Processor type - Leon CSS or Leon MSS
-
void
-
class
SpatialDetectionNetwork
: public dai::NodeCRTP<DetectionNetwork, SpatialDetectionNetwork, SpatialDetectionNetworkProperties>¶ - #include <SpatialDetectionNetwork.hpp>
SpatialDetectionNetwork node. Runs a neural inference on input image and calculates spatial location data.
Public Functions
-
void
setBoundingBoxScaleFactor
(float scaleFactor)¶ Specifies scale factor for detected bounding boxes.
- Parameters
scaleFactor
: Scale factor must be in the interval (0,1].
-
void
setDepthLowerThreshold
(uint32_t lowerThreshold)¶ Specifies lower threshold in millimeters for depth values which will used to calculate spatial data
- Parameters
lowerThreshold
: LowerThreshold must be in the interval [0,upperThreshold] and less than upperThreshold.
-
void
setDepthUpperThreshold
(uint32_t upperThreshold)¶ Specifies upper threshold in millimeters for depth values which will used to calculate spatial data
- Parameters
upperThreshold
: UpperThreshold must be in the interval (lowerThreshold,65535].
-
void
setSpatialCalculationAlgorithm
(dai::SpatialLocationCalculatorAlgorithm calculationAlgorithm)¶ Specifies spatial location calculator algorithm: Average/Min/Max
- Parameters
calculationAlgorithm
: Calculation algorithm.
Public Members
-
Input
input
= {*this, "in", Input::Type::SReceiver, true, 5, true, {{DatatypeEnum::ImgFrame, false}}}¶ Input message with data to be inferred upon Default queue is blocking with size 5
-
Input
inputDepth
= {*this, "inputDepth", Input::Type::SReceiver, false, 4, true, {{DatatypeEnum::ImgFrame, false}}}¶ Input message with depth data used to retrieve spatial information about detected object Default queue is non-blocking with size 4
-
Output
out
= {*this, "out", Output::Type::MSender, {{DatatypeEnum::SpatialImgDetections, false}}}¶ Outputs ImgDetections message that carries parsed detection results.
-
Output
boundingBoxMapping
= {*this, "boundingBoxMapping", Output::Type::MSender, {{DatatypeEnum::SpatialLocationCalculatorConfig, false}}}¶ Outputs mapping of detected bounding boxes relative to depth map
Suitable for when displaying remapped bounding boxes on depth frame
-
Output
passthrough
= {*this, "passthrough", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}}¶ Passthrough message on which the inference was performed.
Suitable for when input queue is set to non-blocking behavior.
-
Output
passthroughDepth
= {*this, "passthroughDepth", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}}¶ Passthrough message for depth frame on which the spatial location calculation was performed.
Suitable for when input queue is set to non-blocking behavior.
-
void
-
class
SpatialLocationCalculator
: public dai::NodeCRTP<Node, SpatialLocationCalculator, SpatialLocationCalculatorProperties> - #include <SpatialLocationCalculator.hpp>
SpatialLocationCalculator node. Calculates spatial location data on a set of ROIs on depth map.
Public Functions
-
void
setWaitForConfigInput
(bool wait) Specify whether or not wait until configuration message arrives to inputConfig Input.
- Parameters
wait
: True to wait for configuration message, false otherwise.
-
bool
getWaitForConfigInput
() const - See
- Return
True if wait for inputConfig message, false otherwise
Public Members
-
SpatialLocationCalculatorConfig
initialConfig
Initial config to use when calculating spatial location data.
-
Input
inputConfig
= {*this, "inputConfig", Input::Type::SReceiver, false, 4, {{DatatypeEnum::SpatialLocationCalculatorConfig, false}}} Input SpatialLocationCalculatorConfig message with ability to modify parameters in runtime. Default queue is non-blocking with size 4.
-
Input
inputDepth
= {*this, "inputDepth", Input::Type::SReceiver, false, 4, true, {{DatatypeEnum::ImgFrame, false}}} Input message with depth data used to retrieve spatial information about detected object. Default queue is non-blocking with size 4.
-
Output
out
= {*this, "out", Output::Type::MSender, {{DatatypeEnum::SpatialLocationCalculatorData, false}}} Outputs SpatialLocationCalculatorData message that carries spatial location results.
-
Output
passthroughDepth
= {*this, "passthroughDepth", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Passthrough message on which the calculation was performed. Suitable for when input queue is set to non-blocking behavior.
-
void
-
class
SPIIn
: public dai::NodeCRTP<Node, SPIIn, SPIInProperties> - #include <SPIIn.hpp>
SPIIn node. Receives messages over SPI.
Public Functions
-
void
setStreamName
(const std::string &name) Specifies stream name over which the node will receive data
- Parameters
name
: Stream name
-
void
setBusId
(int id) Specifies SPI Bus number to use
- Parameters
id
: SPI Bus id
-
void
setMaxDataSize
(std::uint32_t maxDataSize) Set maximum message size it can receive
- Parameters
maxDataSize
: Maximum size in bytes
-
void
setNumFrames
(std::uint32_t numFrames) Set number of frames in pool for sending messages forward
- Parameters
numFrames
: Maximum number of frames in pool
-
std::string
getStreamName
() const Get stream name.
-
int
getBusId
() const Get bus id.
-
std::uint32_t
getMaxDataSize
() const Get maximum messages size in bytes.
-
std::uint32_t
getNumFrames
() const Get number of frames in pool.
Public Members
-
Output
out
= {*this, "out", Output::Type::MSender, {{DatatypeEnum::Buffer, true}}} Outputs message of same type as send from host.
-
void
-
class
SPIOut
: public dai::NodeCRTP<Node, SPIOut, SPIOutProperties> - #include <SPIOut.hpp>
SPIOut node. Sends messages over SPI.
Public Functions
-
void
setStreamName
(std::string name) Specifies stream name over which the node will send data
- Parameters
name
: Stream name
-
void
setBusId
(int id) Specifies SPI Bus number to use
- Parameters
id
: SPI Bus id
Public Members
-
Input
input
= {*this, "in", Input::Type::SReceiver, true, 8, true, {{DatatypeEnum::Buffer, true}}} Input for any type of messages to be transferred over SPI stream
Default queue is blocking with size 8
-
void
-
class
StereoDepth
: public dai::NodeCRTP<Node, StereoDepth, StereoDepthProperties> - #include <StereoDepth.hpp>
StereoDepth node. Compute stereo disparity and depth from left-right image pair.
Public Types
-
enum
PresetMode
Preset modes for stereo depth.
Values:
-
enumerator
HIGH_ACCURACY
-
enumerator
HIGH_DENSITY
-
enumerator
Public Functions
-
void
loadCalibrationFile
(const std::string &path) Specify local filesystem path to the calibration file
- Parameters
path
: Path to calibration file. If empty use EEPROM
-
void
loadCalibrationData
(const std::vector<std::uint8_t> &data) Specify calibration data as a vector of bytes
- Parameters
path
: Calibration data. If empty use EEPROM
-
void
setEmptyCalibration
() Specify that a passthrough/dummy calibration should be used, when input frames are already rectified (e.g. sourced from recordings on the host)
-
void
loadMeshFiles
(const std::string &pathLeft, const std::string &pathRight) Specify local filesystem paths to the mesh calibration files for ‘left’ and ‘right’ inputs.
When a mesh calibration is set, it overrides the camera intrinsics/extrinsics matrices. Mesh format: a sequence of (y,x) points as ‘float’ with coordinates from the input image to be mapped in the output. The mesh can be subsampled, configured by
setMeshStep
.With a 1280x800 resolution and the default (16,16) step, the required mesh size is:
width: 1280 / 16 + 1 = 81
height: 800 / 16 + 1 = 51
-
void
loadMeshData
(const std::vector<std::uint8_t> &dataLeft, const std::vector<std::uint8_t> &dataRight) Specify mesh calibration data for ‘left’ and ‘right’ inputs, as vectors of bytes. See
loadMeshFiles
for the expected data format
-
void
setMeshStep
(int width, int height) Set the distance between mesh points. Default: (16, 16)
-
void
setInputResolution
(int width, int height) Specify input resolution size
Optional if MonoCamera exists, otherwise necessary
-
void
setInputResolution
(std::tuple<int, int> resolution) Specify input resolution size
Optional if MonoCamera exists, otherwise necessary
-
void
setOutputSize
(int width, int height) Specify disparity/depth output resolution size, implemented by scaling.
Currently only applicable when aligning to RGB camera
-
void
setOutputKeepAspectRatio
(bool keep) Specifies whether the frames resized by
setOutputSize
should preserve aspect ratio, with potential cropping when enabled. Defaulttrue
-
void
setMedianFilter
(dai::MedianFilter median) - Parameters
median
: Set kernel size for disparity/depth median filtering, or disable
-
void
setDepthAlign
(Properties::DepthAlign align) - Parameters
align
: Set the disparity/depth alignment: centered (between the ‘left’ and ‘right’ inputs), or from the perspective of a rectified output stream
-
void
setDepthAlign
(CameraBoardSocket camera) - Parameters
camera
: Set the camera from whose perspective the disparity/depth will be aligned
-
void
setConfidenceThreshold
(int confThr) Confidence threshold for disparity calculation
- Parameters
confThr
: Confidence threshold value 0..255
-
void
setRectification
(bool enable) Rectify input images or not.
-
void
setLeftRightCheck
(bool enable) Computes and combines disparities in both L-R and R-L directions, and combine them.
For better occlusion handling, discarding invalid disparity values
-
void
setSubpixel
(bool enable) Computes disparity with sub-pixel interpolation (5 fractional bits).
Suitable for long range. Currently incompatible with extended disparity
-
void
setExtendedDisparity
(bool enable) Disparity range increased from 0-95 to 0-190, combined from full resolution and downscaled images.
Suitable for short range objects. Currently incompatible with sub-pixel disparity
-
void
setRectifyEdgeFillColor
(int color) Fill color for missing data at frame edges
- Parameters
color
: Grayscale 0..255, or -1 to replicate pixels
-
void
setRectifyMirrorFrame
(bool enable) DEPRECATED function. It was removed, since rectified images are not flipped anymore. Mirror rectified frames, only when LR-check mode is disabled. Default
true
. The mirroring is required to have a normal non-mirrored disparity/depth output.A side effect of this option is disparity alignment to the perspective of left or right input:
false
: mapped to left and mirrored,true
: mapped to right. With LR-check enabled, this option is ignored, none of the outputs are mirrored, and disparity is mapped to right.- Parameters
enable
: True for normal disparity/depth, otherwise mirrored
-
void
setOutputRectified
(bool enable) Enable outputting rectified frames. Optimizes computation on device side when disabled. DEPRECATED. The outputs are auto-enabled if used
-
void
setOutputDepth
(bool enable) Enable outputting ‘depth’ stream (converted from disparity). In certain configurations, this will disable ‘disparity’ stream. DEPRECATED. The output is auto-enabled if used
-
void
setRuntimeModeSwitch
(bool enable) Enable runtime stereo mode switch, e.g. from standard to LR-check. Note: when enabled resources allocated for worst case to enable switching to any mode.
-
void
setNumFramesPool
(int numFramesPool) Specify number of frames in pool.
- Parameters
numFramesPool
: How many frames should the pool have
-
float
getMaxDisparity
() const Useful for normalization of the disparity map.
- Return
Maximum disparity value that the node can return
-
void
setPostProcessingHardwareResources
(int numShaves, int numMemorySlices) Specify allocated hardware resources for stereo depth. Suitable only to increase post processing runtime.
- Parameters
numShaves
: Number of shaves.numMemorySlices
: Number of memory slices.
-
void
setDefaultProfilePreset
(PresetMode mode) Sets a default preset based on specified option.
- Parameters
mode
: Stereo depth preset mode
Public Members
-
StereoDepthConfig
initialConfig
Initial config to use for StereoDepth.
-
Input
inputConfig
= {*this, "inputConfig", Input::Type::SReceiver, false, 4, {{DatatypeEnum::StereoDepthConfig, false}}} Input StereoDepthConfig message with ability to modify parameters in runtime. Default queue is non-blocking with size 4.
-
Input
left
= {*this, "left", Input::Type::SReceiver, false, 8, true, {{DatatypeEnum::ImgFrame, true}}} Input for left ImgFrame of left-right pair
Default queue is non-blocking with size 8
-
Input
right
= {*this, "right", Input::Type::SReceiver, false, 8, true, {{DatatypeEnum::ImgFrame, true}}} Input for right ImgFrame of left-right pair
Default queue is non-blocking with size 8
-
Output
depth
= {*this, "depth", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Outputs ImgFrame message that carries RAW16 encoded (0..65535) depth data in millimeters.
Non-determined / invalid depth values are set to 0
-
Output
disparity
= {*this, "disparity", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Outputs ImgFrame message that carries RAW8 / RAW16 encoded disparity data: RAW8 encoded (0..95) for standard mode; RAW8 encoded (0..190) for extended disparity mode; RAW16 encoded (0..3040) for subpixel disparity mode (32 subpixel levels on top of standard mode).
-
Output
syncedLeft
= {*this, "syncedLeft", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Passthrough ImgFrame message from ‘left’ Input.
-
Output
syncedRight
= {*this, "syncedRight", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Passthrough ImgFrame message from ‘right’ Input.
-
Output
rectifiedLeft
= {*this, "rectifiedLeft", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Outputs ImgFrame message that carries RAW8 encoded (grayscale) rectified frame data.
-
Output
rectifiedRight
= {*this, "rectifiedRight", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Outputs ImgFrame message that carries RAW8 encoded (grayscale) rectified frame data.
-
Output
outConfig
= {*this, "outConfig", Output::Type::MSender, {{DatatypeEnum::StereoDepthConfig, false}}} Outputs StereoDepthConfig message that contains current stereo configuration.
-
Output
debugDispLrCheckIt1
= {*this, "debugDispLrCheckIt1", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Outputs ImgFrame message that carries left-right check first iteration (before combining with second iteration) disparity map. Useful for debugging/fine tuning.
-
Output
debugDispLrCheckIt2
= {*this, "debugDispLrCheckIt2", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Outputs ImgFrame message that carries left-right check second iteration (before combining with first iteration) disparity map. Useful for debugging/fine tuning.
-
Output
debugExtDispLrCheckIt1
= {*this, "debugExtDispLrCheckIt1", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Outputs ImgFrame message that carries extended left-right check first iteration (downscaled frame, before combining with second iteration) disparity map. Useful for debugging/fine tuning.
-
Output
debugExtDispLrCheckIt2
= {*this, "debugExtDispLrCheckIt2", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Outputs ImgFrame message that carries extended left-right check second iteration (downscaled frame, before combining with first iteration) disparity map. Useful for debugging/fine tuning.
-
Output
debugDispCostDump
= {*this, "debugDispCostDump", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Outputs ImgFrame message that carries cost dump of disparity map. Useful for debugging/fine tuning.
-
Output
confidenceMap
= {*this, "confidenceMap", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Outputs ImgFrame message that carries RAW8 confidence map. Lower values means higher confidence of the calculated disparity value. RGB alignment, left-right check or any postproccessing (e.g. median filter) is not performed on confidence map.
-
enum
-
class
SystemLogger
: public dai::NodeCRTP<Node, SystemLogger, SystemLoggerProperties> - #include <SystemLogger.hpp>
SystemLogger node. Send system information periodically.
Public Functions
-
void
setRate
(float hz) Specify logging rate, at which messages will be sent out
- Parameters
hz
: Sending rate in hertz (messages per second)
-
float
getRate
() Gets logging rate, at which messages will be sent out
Public Members
-
Output
out
= {*this, "out", Output::Type::MSender, {{DatatypeEnum::SystemInformation, false}}} Outputs SystemInformation message that carries various system information like memory and CPU usage, temperatures, …
-
void
-
class
VideoEncoder
: public dai::NodeCRTP<Node, VideoEncoder, VideoEncoderProperties> - #include <VideoEncoder.hpp>
VideoEncoder node. Encodes frames into MJPEG, H264 or H265.
Public Functions
-
void
setDefaultProfilePreset
(float fps, Properties::Profile profile) Sets a default preset based on specified frame rate and profile
- Parameters
fps
: Frame rate in frames per secondprofile
: Encoding profile
-
void
setDefaultProfilePreset
(int width, int height, float fps, Properties::Profile profile) Sets a default preset based on specified input size, frame rate and profile
- Parameters
width
: Input frame widthheight
: Input frame heightfps
: Frame rate in frames per secondprofile
: Encoding profile
-
void
setDefaultProfilePreset
(std::tuple<int, int> size, float fps, Properties::Profile profile) Sets a default preset based on specified input size, frame rate and profile
- Parameters
size
: Input frame sizefps
: Frame rate in frames per secondprofile
: Encoding profile
-
void
setNumFramesPool
(int frames) Set number of frames in pool
- Parameters
frames
: Number of pool frames
-
int
getNumFramesPool
() const Get number of frames in pool
- Return
Number of pool frames
-
void
setRateControlMode
(Properties::RateControlMode mode) Set rate control mode.
-
void
setProfile
(Properties::Profile profile) Set encoding profile.
-
void
setProfile
(std::tuple<int, int> size, Properties::Profile profile) Set encoding profile.
-
void
setProfile
(int width, int height, Properties::Profile profile) Set encoding profile.
-
void
setBitrate
(int bitrate) Set output bitrate in bps, for CBR rate control mode. 0 for auto (based on frame size and FPS)
-
void
setBitrateKbps
(int bitrateKbps) Set output bitrate in kbps, for CBR rate control mode. 0 for auto (based on frame size and FPS)
-
void
setKeyframeFrequency
(int freq) Set keyframe frequency. Every Nth frame a keyframe is inserted.
Applicable only to H264 and H265 profiles
Examples:
30 FPS video, keyframe frequency: 30. Every 1s a keyframe will be inserted
60 FPS video, keyframe frequency: 180. Every 3s a keyframe will be inserted
-
void
setNumBFrames
(int numBFrames) Set number of B frames to be inserted.
-
void
setQuality
(int quality) Set quality
- Parameters
quality
: Value between 0-100%. Approximates quality
-
void
setLossless
(bool lossless) Set lossless mode. Applies only to [M]JPEG profile
- Parameters
lossless
: True to enable lossless jpeg encoding, false otherwise
-
void
setFrameRate
(float frameRate) Sets expected frame rate
- Parameters
frameRate
: Frame rate in frames per second
-
Properties::RateControlMode
getRateControlMode
() const Get rate control mode.
-
Properties::Profile
getProfile
() const Get profile.
-
int
getBitrate
() const Get bitrate in bps.
-
int
getBitrateKbps
() const Get bitrate in kbps.
-
int
getKeyframeFrequency
() const Get keyframe frequency.
-
int
getNumBFrames
() const Get number of B frames.
-
int
getQuality
() const Get quality.
-
std::tuple<int, int>
getSize
() const Get input size.
-
int
getWidth
() const Get input width.
-
int
getHeight
() const Get input height.
-
float
getFrameRate
() const Get frame rate.
-
bool
getLossless
() const Get lossless mode. Applies only when using [M]JPEG profile.
Public Members
-
Input
input
= {*this, "in", Input::Type::SReceiver, true, 4, true, {{DatatypeEnum::ImgFrame, true}}} Input for NV12 ImgFrame to be encoded Default queue is blocking with size set by ‘setNumFramesPool’ (4).
-
Output
bitstream
= {*this, "bitstream", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}} Outputs ImgFrame message that carries BITSTREAM encoded (MJPEG, H264 or H265) frame data.
-
void
-
class
XLinkIn
: public dai::NodeCRTP<Node, XLinkIn, XLinkInProperties> - #include <XLinkIn.hpp>
XLinkIn node. Receives messages over XLink.
Public Functions
-
void
setStreamName
(const std::string &name) Specifies XLink stream name to use.
The name should not start with double underscores ‘__’, as those are reserved for internal use.
- Parameters
name
: Stream name
-
void
setMaxDataSize
(std::uint32_t maxDataSize) Set maximum message size it can receive
- Parameters
maxDataSize
: Maximum size in bytes
-
void
setNumFrames
(std::uint32_t numFrames) Set number of frames in pool for sending messages forward
- Parameters
numFrames
: Maximum number of frames in pool
-
std::string
getStreamName
() const Get stream name.
-
std::uint32_t
getMaxDataSize
() const Get maximum messages size in bytes.
-
std::uint32_t
getNumFrames
() const Get number of frames in pool.
Public Members
-
Output
out
= {*this, "out", Output::Type::MSender, {{DatatypeEnum::Buffer, true}}} Outputs message of same type as send from host.
-
void
-
class
XLinkOut
: public dai::NodeCRTP<Node, XLinkOut, XLinkOutProperties> - #include <XLinkOut.hpp>
XLinkOut node. Sends messages over XLink.
Public Functions
-
void
setStreamName
(const std::string &name) Specifies XLink stream name to use.
The name should not start with double underscores ‘__’, as those are reserved for internal use.
- Parameters
name
: Stream name
-
void
setFpsLimit
(float fps) Specifies a message sending limit. It’s approximated from specified rate.
- Parameters
fps
: Approximate rate limit in messages per second
-
void
setMetadataOnly
(bool metadataOnly) Specify whether to transfer only messages attributes and not buffer data
-
std::string
getStreamName
() const Get stream name.
-
float
getFpsLimit
() const Get rate limit in messages per second.
-
bool
getMetadataOnly
() const Get whether to transfer only messages attributes and not buffer data.
Public Members
-
Input
input
= {*this, "in", Input::Type::SReceiver, true, 8, true, {{DatatypeEnum::Buffer, true}}} Input for any type of messages to be transferred over XLink stream
Default queue is blocking with size 8
-
void
-
class
YoloDetectionNetwork
: public dai::NodeCRTP<DetectionNetwork, YoloDetectionNetwork, DetectionNetworkProperties> - #include <DetectionNetwork.hpp>
YoloDetectionNetwork node. Parses Yolo results.
Public Functions
-
void
setNumClasses
(int numClasses) Set num classes.
-
void
setCoordinateSize
(int coordinates) Set coordianate size.
-
void
setAnchors
(std::vector<float> anchors) Set anchors.
-
void
setAnchorMasks
(std::map<std::string, std::vector<int>> anchorMasks) Set anchor masks.
-
void
setIouThreshold
(float thresh) Set Iou threshold.
-
int
getNumClasses
() const Get num classes.
-
int
getCoordinateSize
() const Get coordianate size.
-
std::vector<float>
getAnchors
() const Get anchors.
-
std::map<std::string, std::vector<int>>
getAnchorMasks
() const Get anchor masks.
-
float
getIouThreshold
() const Get Iou threshold.
-
void
-
class
YoloSpatialDetectionNetwork
: public dai::NodeCRTP<SpatialDetectionNetwork, YoloSpatialDetectionNetwork, SpatialDetectionNetworkProperties> - #include <SpatialDetectionNetwork.hpp>
YoloSpatialDetectionNetwork node. (tiny)Yolov3/v4 based network with spatial location data.
Public Functions
-
void
setNumClasses
(const int numClasses) Set num classes.
-
void
setCoordinateSize
(const int coordinates) Set coordianate size.
-
void
setAnchors
(std::vector<float> anchors) Set anchors.
-
void
setAnchorMasks
(std::map<std::string, std::vector<int>> anchorMasks) Set anchor masks.
-
void
setIouThreshold
(float thresh) Set Iou threshold.
-
int
getNumClasses
() const Get num classes.
-
int
getCoordinateSize
() const Get coordianate size.
-
std::vector<float>
getAnchors
() const Get anchors.
-
std::map<std::string, std::vector<int>>
getAnchorMasks
() const Get anchor masks.
-
float
getIouThreshold
() const Get Iou threshold.
-
void
-
class
-
namespace
utility
¶ Functions
-
std::uint32_t
checksum
(const void *buffer, std::size_t size, uint32_t prevChecksum)¶ Simple hash function - djb2
- Parameters
buffer
: Pointer to buffer of data to hashsize
: Size of buffer in bytesprevChecksum
: Previous checksum - useful for doing hash on blocks of data
-
std::uint32_t
checksum
(const void *buffer, std::size_t size)¶ Simple hash function - djb2
- Parameters
buffer
: Pointer to buffer of data to hashsize
: Size of buffer in bytes
-
class
VectorWriter
¶
-
std::uint32_t
-
using
Got questions?
We’re always happy to help with code or other questions you might have.