Script camera control¶
This example shows how to use Script node. It controls the ColorCamera to capture a still image every second.
Demo¶
Setup¶
Please run the install script to download all required dependencies. Please note that this script must be ran from git context, so you have to download the depthai-python repository first and then run the script
git clone https://github.com/luxonis/depthai-python.git
cd depthai-python/examples
python3 install_requirements.py
For additional information, please follow installation guide
Source code¶
Also available on GitHub
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #!/usr/bin/env python3
import cv2
import depthai as dai
# Start defining a pipeline
pipeline = dai.Pipeline()
# Define a source - color camera
cam = pipeline.create(dai.node.ColorCamera)
# Script node
script = pipeline.create(dai.node.Script)
script.setScript("""
import time
ctrl = CameraControl()
ctrl.setCaptureStill(True)
while True:
time.sleep(1)
node.io['out'].send(ctrl)
""")
# XLinkOut
xout = pipeline.create(dai.node.XLinkOut)
xout.setStreamName('still')
# Connections
script.outputs['out'].link(cam.inputControl)
cam.still.link(xout.input)
# Connect to device with pipeline
with dai.Device(pipeline) as device:
while True:
img = device.getOutputQueue("still").get()
cv2.imshow('still', img.getCvFrame())
if cv2.waitKey(1) == ord('q'):
break
|
Also available on GitHub
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #include <iostream>
// Includes common necessary includes for development using depthai library
#include "depthai/depthai.hpp"
int main() {
using namespace std;
// Start defining a pipeline
dai::Pipeline pipeline;
// Define a source - color camera
auto colorCam = pipeline.create<dai::node::ColorCamera>();
// Script node
auto script = pipeline.create<dai::node::Script>();
script->setScript(R"(
import time
ctrl = CameraControl()
ctrl.setCaptureStill(True)
while True:
time.sleep(1)
node.io['out'].send(ctrl)
)");
// XLinkOut
auto xout = pipeline.create<dai::node::XLinkOut>();
xout->setStreamName("still");
// Connections
script->outputs["out"].link(colorCam->inputControl);
colorCam->still.link(xout->input);
// Connect to device with pipeline
dai::Device device(pipeline);
while(true) {
auto img = device.getOutputQueue("still")->get<dai::ImgFrame>();
cv::imshow("still", img->getCvFrame());
if(cv::waitKey(1) == 'q') {
break;
}
}
return 0;
}
|