This experiment has two components:
- A visual graph editor that lets you compose a DepthAI pipeline visually and save it as a JSON file.
- A parser for those JSON files that will turn it into a usable DepthAI pipeline
The graph editor is a modified version of NodeGraphQt by Johnny Chan.
To install this tool, run the following command
$ python3 -m pip install depthai-gui
To run the visual pipeline editor, run the following command
$ depthai-gui
- Press Tab to create new nodes
- Right Click To save/load pipeline graphs
- You can find a full list of controls in the NodeGraphQt Documentation
You can also provide optional arguments, like default context path (-p / --path
) or the project file to open (-o / --open
)
$ depthai-gui --help
usage: depthai-gui [-h] [-p PATH] [-o OPEN]
optional arguments:
-h, --help show this help message and exit
-p PATH, --path PATH Path to save/load default directory
-o OPEN, --open OPEN Path to project file to open
Also, you can use the demo program that will run the generated pipeline (or default ExampleGraph.json
) with the following command
$ depthai-gui-demo # to run a default ExampleGraph.json
$ depthai-gui-demo -p <path> # to run a custom pipeline
If you want to enhance or modify this script or would like to install it without PyPi, please install all the necessary requirements with
$ python3 install_requirements.py
Next, you can check the following files:
pipeline_editor.py
- Runs the visual pipeline editor (eqivalent ofdepthai-gui
)demo.py
- Runs the demo script (equivalent ofdepthai-gui-demo
)DAIPipelineGraph.py
is the graph parser.
If you want to use the generated pipeline in your application, you can do so by importing DAIPipelineGraph
module.
And example integration is shown below
from DAIPipelineGraph import DAIPipelineGraph
pipeline_graph = DAIPipelineGraph( path=pipeline_path )
with dai.Device( pipeline_graph.pipeline ) as device:
...
The most useful fields you can use from DAIPipelineGraph
class are:
DAIPipelineGraph.pipeline
: A reference to the DepthAI pipelineDAIPipelineGraph.nodes
: A table of all the nodes. You can access them via the name you put into the "Node Name" field in the editor. Ex:pipeline_graph.nodes["rgb_cam"].setPreviewSize(300,300)
DAIPipelineGraph.xout_streams
: A list of all the names of the XLinkOut streams
You can also check the demo script as a reference on how to make a working scripts with this class