Pipeline
Pipeline is a collection of Nodes and links between them. This flow provides an extensive flexibility that users get for their OAK device. When pipeline object is passed to the Device object, pipeline gets serialized to JSON and sent to the OAK device via XLink.Pipeline first steps
To get DepthAI up and running, you have to create a pipeline, populate it with nodes, configure the nodes and link them together. After that, the pipeline can be loaded onto the Device and be started.Python
1pipeline = depthai.pipeline()
2
3# If required, specify OpenVINO version
4pipeline.setOpenVINOVersion(depthai.OpenVINO.Version.VERSION_2021_4)
5
6# Create nodes, configure them and link them together
7
8# Upload the pipeline to the device
9with depthai.Device(pipeline) as device:
10 # Set input/output queues to configure device/host communication through the XLink...
Specifying OpenVINO version
When using a NN blob that was not compiled with the latest OpenVINO (that DepthAI supports), you have to specify the OpenVINO version of the pipeline. The reason behind this is that OpenVINO doesn't provide version inside the blob.Python
1pipeline = depthai.pipeline()
2# Set the correct version:
3pipeline.setOpenVINOVersion(depthai.OpenVINO.Version.VERSION_2021_4)
Using multiple devices
If user has multiple Luxonis' devices, each device can run a different pipeline or the same pipeline (demo here). To use different pipeline for each device, you can create multiple pipelines and pass the desired pipeline to the desired device on initialization. See Multi-device Setup for more information.How to place it
Python
C++
Python
Python
1pipeline = dai.Pipeline()
Reference
class
depthai.Pipeline
method
__init__(self)
Constructs a new pipeline
method
method
method
method
method
method
method
method
method
method
method
method
method
method
method
method
method
method
method
method
method
method
method
method
method
method
method
method
method
method
getBoardConfig(self) -> BoardConfig: BoardConfig
Gets board configuration
method
getCalibrationData(self) -> CalibrationHandler: CalibrationHandler
gets the calibration data which is set through pipeline Returns: the calibrationHandler with calib data in the pipeline
method
getConnectionMap(self) -> dict[int, set[Node.Connection]]: dict[int, set[Node.Connection]]
Get a reference to internal connection representation
method
getConnections(self) -> list[Node.Connection]: list[Node.Connection]
Get all connections
method
getDeviceConfig(self) -> Device.Config: Device.Config
Get device configuration needed for this pipeline
method
getGlobalProperties(self) -> GlobalProperties: GlobalProperties
Returns: Global properties of current pipeline
method
method
getNodeMap(self) -> dict[int, Node]: dict[int, Node]
Get a reference to internal node map
method
getOpenVINOVersion(self) -> OpenVINO.Version: OpenVINO.Version
Get possible OpenVINO version to run this pipeline
method
getRequiredOpenVINOVersion(self) -> OpenVINO.Version|None: OpenVINO.Version|None
Get required OpenVINO version to run this pipeline. Can be none
method
link(self, arg0: Node.Output, arg1: Node.Input)
Link output to an input. Both nodes must be on the same pipeline Throws an error if they aren't or cannot be connected Parameter ``out``: Nodes output to connect from Parameter ``in``: Nodes input to connect to
method
remove(self, node: Node)
Removes a node from pipeline
method
serializeToJson(self) -> json: json
Returns whole pipeline represented as JSON
method
setBoardConfig(self, arg0: BoardConfig)
Sets board configuration
method
setCalibrationData(self, calibrationDataHandler: CalibrationHandler)
Sets the calibration in pipeline which overrides the calibration data in eeprom Parameter ``calibrationDataHandler``: CalibrationHandler object which is loaded with calibration information.
method
setCameraTuningBlobPath(self, path: Path)
Set a camera IQ (Image Quality) tuning blob, used for all cameras
method
setOpenVINOVersion(self, version: OpenVINO.Version)
Set a specific OpenVINO version to use with this pipeline
method
setSippBufferSize(self, sizeBytes: int)
SIPP (Signal Image Processing Pipeline) internal memory pool. SIPP is a framework used to schedule HW filters, e.g. ISP, Warp, Median filter etc. Changing the size of this pool is meant for advanced use cases, pushing the limits of the HW. By default memory is allocated in high speed CMX memory. Setting to 0 will allocate in DDR 256 kilobytes. Units are bytes.
method
setSippDmaBufferSize(self, sizeBytes: int)
SIPP (Signal Image Processing Pipeline) internal DMA memory pool. SIPP is a framework used to schedule HW filters, e.g. ISP, Warp, Median filter etc. Changing the size of this pool is meant for advanced use cases, pushing the limits of the HW. Memory is allocated in high speed CMX memory Units are bytes.
method
setXLinkChunkSize(self, sizeBytes: int)
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.
method
unlink(self, arg0: Node.Output, arg1: Node.Input)
Unlink output from an input. Throws an error if link doesn't exists Parameter ``out``: Nodes output to unlink from Parameter ``in``: Nodes input to unlink to