ColorCamera¶
ColorCamera node is a source of image frames. You can control in at runtime with the InputControl
and InputConfig
.
How to place it¶
pipeline = dai.Pipeline()
cam = pipeline.create(dai.node.ColorCamera)
dai::Pipeline pipeline;
auto cam = pipeline.create<dai::node::ColorCamera>();
Inputs and Outputs¶
ColorCamera node
┌──────────────────────────────┐
│ ┌─────────────┐ │
│ │ Image │ raw │ raw
│ │ Sensor │---┬--------├────────►
│ └────▲────────┘ | │
│ │ ┌--------┘ │
│ ┌─┴───▼─┐ │ isp
inputControl │ │ │-------┬-------├────────►
──────────────►│------│ ISP │ ┌─────▼────┐ │ video
│ │ │ | |--├────────►
│ └───────┘ │ Image │ │ still
inputConfig │ │ Post- │--├────────►
──────────────►│----------------|Processing│ │ preview
│ │ │--├────────►
│ └──────────┘ │
└──────────────────────────────┘
Message types
inputConfig
- ImageManipConfiginputControl
- CameraControlraw
- ImgFrame - RAW10 bayer data. Demo code for unpacking hereisp
- ImgFrame - YUV420 planar (same as YU12/IYUV/I420)still
- ImgFrame - NV12, suitable for bigger size frames. The image gets created when a capture event is sent to the ColorCamera, so it’s like taking a photopreview
- ImgFrame - RGB (or BGR planar/interleaved if configured), mostly suited for small size previews and to feed the image into NeuralNetworkvideo
- ImgFrame - NV12, suitable for bigger size frames
ISP (image signal processor) is used for bayer transformation, demosaicing, noise reduction, and other image enhancements. It interacts with the 3A algorithms: auto-focus, auto-exposure, and auto-white-balance, which are handling image sensor adjustments such as exposure time, sensitivity (ISO), and lens position (if the camera module has a motorized lens) at runtime. Click here for more information.
Image Post-Processing converts YUV420 planar frames from the ISP into video
/preview
/still
frames.
When setting sensor resolution to 12MP and using video
, you will get 4K video output. 4K frames are cropped from 12MP frames (not downsampled).
Usage¶
pipeline = dai.Pipeline()
cam = pipeline.create(dai.node.ColorCamera)
cam.setPreviewSize(300, 300)
cam.setBoardSocket(dai.CameraBoardSocket.RGB)
cam.setResolution(dai.ColorCameraProperties.SensorResolution.THE_1080_P)
cam.setInterleaved(False)
cam.setColorOrder(dai.ColorCameraProperties.ColorOrder.RGB)
dai::Pipeline pipeline;
auto cam = pipeline.create<dai::node::ColorCamera>();
cam->setPreviewSize(300, 300);
cam->setBoardSocket(dai::CameraBoardSocket::RGB);
cam->setResolution(dai::ColorCameraProperties::SensorResolution::THE_1080_P);
cam->setInterleaved(false);
cam->setColorOrder(dai::ColorCameraProperties::ColorOrder::RGB);
Examples of functionality¶
Reference¶
-
class
depthai.node.
ColorCamera
ColorCamera node. For use with color sensors.
-
class
Connection
Connection between an Input and Output
-
class
Id
Node identificator. Unique for every node on a single Pipeline
-
Properties
alias of
depthai.ColorCameraProperties
-
getAssetManager
(*args, **kwargs) Overloaded function.
getAssetManager(self: depthai.Node) -> depthai.AssetManager
Get node AssetManager as a const reference
getAssetManager(self: depthai.Node) -> depthai.AssetManager
Get node AssetManager as a const reference
-
getBoardSocket
(self: depthai.node.ColorCamera) → depthai.CameraBoardSocket Retrieves which board socket to use
- Returns
Board socket to use
-
getCamId
(self: depthai.node.ColorCamera) → int
-
getColorOrder
(self: depthai.node.ColorCamera) → depthai.ColorCameraProperties.ColorOrder Get color order of preview output frames. RGB or BGR
-
getFp16
(self: depthai.node.ColorCamera) → bool Get fp16 (0..255) data of preview output frames
-
getFps
(self: depthai.node.ColorCamera) → float Get rate at which camera should produce frames
- Returns
Rate in frames per second
-
getImageOrientation
(self: depthai.node.ColorCamera) → depthai.CameraImageOrientation Get camera image orientation
-
getInputRefs
(*args, **kwargs) Overloaded function.
getInputRefs(self: depthai.Node) -> List[depthai.Node.Input]
Retrieves reference to node inputs
getInputRefs(self: depthai.Node) -> List[depthai.Node.Input]
Retrieves reference to node inputs
-
getInputs
(self: depthai.Node) → List[depthai.Node.Input] Retrieves all nodes inputs
-
getInterleaved
(self: depthai.node.ColorCamera) → bool Get planar or interleaved data of preview output frames
-
getIspHeight
(self: depthai.node.ColorCamera) → int Get ‘isp’ output height
-
getIspSize
(self: depthai.node.ColorCamera) → Tuple[int, int] Get ‘isp’ output resolution as size, after scaling
-
getIspWidth
(self: depthai.node.ColorCamera) → int Get ‘isp’ output width
-
getName
(self: depthai.Node) → str Retrieves nodes name
-
getOutputRefs
(*args, **kwargs) Overloaded function.
getOutputRefs(self: depthai.Node) -> List[depthai.Node.Output]
Retrieves reference to node outputs
getOutputRefs(self: depthai.Node) -> List[depthai.Node.Output]
Retrieves reference to node outputs
-
getOutputs
(self: depthai.Node) → List[depthai.Node.Output] Retrieves all nodes outputs
-
getParentPipeline
(*args, **kwargs) Overloaded function.
getParentPipeline(self: depthai.Node) -> depthai.Pipeline
getParentPipeline(self: depthai.Node) -> depthai.Pipeline
-
getPreviewHeight
(self: depthai.node.ColorCamera) → int Get preview height
-
getPreviewKeepAspectRatio
(self: depthai.node.ColorCamera) → bool See also
setPreviewKeepAspectRatio
- Returns
Preview keep aspect ratio option
-
getPreviewSize
(self: depthai.node.ColorCamera) → Tuple[int, int] Get preview size as tuple
-
getPreviewWidth
(self: depthai.node.ColorCamera) → int Get preview width
-
getResolution
(self: depthai.node.ColorCamera) → depthai.ColorCameraProperties.SensorResolution Get sensor resolution
-
getResolutionHeight
(self: depthai.node.ColorCamera) → int Get sensor resolution height
-
getResolutionSize
(self: depthai.node.ColorCamera) → Tuple[int, int] Get sensor resolution as size
-
getResolutionWidth
(self: depthai.node.ColorCamera) → int Get sensor resolution width
-
getSensorCrop
(self: depthai.node.ColorCamera) → Tuple[float, float] - Returns
Sensor top left crop coordinates
-
getSensorCropX
(self: depthai.node.ColorCamera) → float Get sensor top left x crop coordinate
-
getSensorCropY
(self: depthai.node.ColorCamera) → float Get sensor top left y crop coordinate
-
getStillHeight
(self: depthai.node.ColorCamera) → int Get still height
-
getStillSize
(self: depthai.node.ColorCamera) → Tuple[int, int] Get still size as tuple
-
getStillWidth
(self: depthai.node.ColorCamera) → int Get still width
-
getVideoHeight
(self: depthai.node.ColorCamera) → int Get video height
-
getVideoSize
(self: depthai.node.ColorCamera) → Tuple[int, int] Get video size as tuple
-
getVideoWidth
(self: depthai.node.ColorCamera) → int Get video width
-
getWaitForConfigInput
(self: depthai.node.ColorCamera) → bool See also
setWaitForConfigInput
- Returns
True if wait for inputConfig message, false otherwise
-
property
id
Id of node
-
property
initialControl
Initial control options to apply to sensor
-
property
inputConfig
Input for ImageManipConfig message, which can modify crop parameters in runtime
Default queue is non-blocking with size 8
-
property
inputControl
Input for CameraControl message, which can modify camera parameters in runtime
Default queue is blocking with size 8
-
property
isp
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
-
property
preview
Outputs ImgFrame message that carries BGR/RGB planar/interleaved encoded frame data.
Suitable for use with NeuralNetwork node
-
property
raw
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.
-
sensorCenterCrop
(self: depthai.node.ColorCamera) → None Specify sensor center crop. Resolution size / video size
-
setBoardSocket
(self: depthai.node.ColorCamera, boardSocket: depthai.CameraBoardSocket) → None Specify which board socket to use
- Parameter
boardSocket
: Board socket to use
- Parameter
-
setCamId
(self: depthai.node.ColorCamera, arg0: int) → None
-
setColorOrder
(self: depthai.node.ColorCamera, colorOrder: depthai.ColorCameraProperties.ColorOrder) → None Set color order of preview output images. RGB or BGR
-
setFp16
(self: depthai.node.ColorCamera, fp16: bool) → None Set fp16 (0..255) data type of preview output frames
-
setFps
(self: depthai.node.ColorCamera, fps: float) → None Set rate at which camera should produce frames
- Parameter
fps
: Rate in frames per second
- Parameter
-
setImageOrientation
(self: depthai.node.ColorCamera, imageOrientation: depthai.CameraImageOrientation) → None Set camera image orientation
-
setInterleaved
(self: depthai.node.ColorCamera, interleaved: bool) → None Set planar or interleaved data of preview output frames
-
setIspScale
(*args, **kwargs) Overloaded function.
setIspScale(self: depthai.node.ColorCamera, numerator: int, denominator: int) -> None
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
setIspScale(self: depthai.node.ColorCamera, scale: Tuple[int, int]) -> None
Set ‘isp’ output scaling, as a tuple <numerator, denominator>
setIspScale(self: depthai.node.ColorCamera, horizNum: int, horizDenom: int, vertNum: int, vertDenom: int) -> None
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
setIspScale(self: depthai.node.ColorCamera, horizScale: Tuple[int, int], vertScale: Tuple[int, int]) -> None
Set ‘isp’ output scaling, per each direction, as <numerator, denominator> tuples
-
setPreviewKeepAspectRatio
(self: depthai.node.ColorCamera, keep: bool) → None Specifies whether preview output should preserve aspect ratio, after downscaling from video size or not.
- Parameter
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
- Parameter
-
setPreviewSize
(*args, **kwargs) Overloaded function.
setPreviewSize(self: depthai.node.ColorCamera, width: int, height: int) -> None
Set preview output size
setPreviewSize(self: depthai.node.ColorCamera, size: Tuple[int, int]) -> None
Set preview output size, as a tuple <width, height>
-
setResolution
(self: depthai.node.ColorCamera, resolution: depthai.ColorCameraProperties.SensorResolution) → None Set sensor resolution
-
setSensorCrop
(self: depthai.node.ColorCamera, x: float, y: float) → None Specifies sensor crop rectangle
- Parameter
x
: Top left X coordinate
- Parameter
y
: Top left Y coordinate
- Parameter
-
setStillSize
(*args, **kwargs) Overloaded function.
setStillSize(self: depthai.node.ColorCamera, width: int, height: int) -> None
Set still output size
setStillSize(self: depthai.node.ColorCamera, size: Tuple[int, int]) -> None
Set still output size, as a tuple <width, height>
-
setVideoSize
(*args, **kwargs) Overloaded function.
setVideoSize(self: depthai.node.ColorCamera, width: int, height: int) -> None
Set video output size
setVideoSize(self: depthai.node.ColorCamera, size: Tuple[int, int]) -> None
Set video output size, as a tuple <width, height>
-
setWaitForConfigInput
(self: depthai.node.ColorCamera, wait: bool) → None Specify to wait until inputConfig receives a configuration message, before sending out a frame.
- Parameter
wait
: True to wait for inputConfig message, false otherwise
- Parameter
-
property
still
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.
-
property
video
Outputs ImgFrame message that carries NV12 encoded (YUV420, UV plane interleaved) frame data.
Suitable for use with VideoEncoder node
-
class
-
class
dai::node
::
ColorCamera
: public dai::NodeCRTP<Node, ColorCamera, ColorCameraProperties>¶ 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.
Public Static Attributes
-
constexpr const char *
NAME
= "ColorCamera"¶
Private Members
-
std::shared_ptr<RawCameraControl>
rawControl
¶
Got questions?
We’re always happy to help with code or other questions you might have.