Class ColorCamera
Defined in File ColorCamera.hpp
Inheritance Relationships
Base Type
public dai::NodeCRTP< Node, ColorCamera, ColorCameraProperties >(Template Class NodeCRTP)
Class Documentation
-
class 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
- Returns:
Board socket to use
-
void setCamera(std::string name)
Specify which camera to use by name
- Parameters:
name – Name of the camera to use
-
std::string getCamera() const
Retrieves which camera to use by name
- Returns:
Name of the camera 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 setPreviewNumFramesPool(int num)
Set number of frames in preview pool.
-
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 setVideoNumFramesPool(int num)
Set number of frames in preview pool.
-
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 setStillNumFramesPool(int num)
Set number of frames in preview pool.
-
void setResolution(Properties::SensorResolution resolution)
Set sensor resolution.
-
Properties::SensorResolution getResolution() const
Get sensor resolution.
-
void setRawNumFramesPool(int num)
Set number of frames in raw pool.
-
void setIspNumFramesPool(int num)
Set number of frames in isp pool.
-
void setNumFramesPool(int raw, int isp, int preview, int video, int still)
Set number of frames in all pools.
-
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
-
void setIsp3aFps(int isp3aFps)
Isp 3A rate (auto focus, auto exposure, auto white balance, camera controls etc.). Default (0) matches the camera FPS, meaning that 3A is running on each frame. Reducing the rate of 3A reduces the CPU usage on CSS, but also increases the convergence rate of 3A. Note that camera controls will be processed at this rate. E.g. if camera is running at 30 fps, and camera control is sent at every frame, but 3A fps is set to 15, the camera control messages will be processed at 15 fps rate, which will lead to queueing.
-
void setFrameEventFilter(const std::vector<dai::FrameEvent> &events)
-
std::vector<dai::FrameEvent> getFrameEventFilter() const
-
float getFps() const
Get rate at which camera should produce frames
- Returns:
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 the cropping that happens when converting ISP to video output. By default, video will be center cropped from the ISP output. Note that this doesn’t actually do on-sensor cropping (and MIPI-stream only that region), but it does postprocessing on the ISP (on RVC).
- Parameters:
x – Top left X coordinate
y – Top left Y coordinate
-
std::tuple<float, float> getSensorCrop() const
- Returns:
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 also
- Returns:
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 also
- Returns:
Preview keep aspect ratio option
-
int getPreviewNumFramesPool()
Get number of frames in preview pool.
-
int getVideoNumFramesPool()
Get number of frames in video pool.
-
int getStillNumFramesPool()
Get number of frames in still pool.
-
int getRawNumFramesPool()
Get number of frames in raw pool.
-
int getIspNumFramesPool()
Get number of frames in isp pool.
-
void setRawOutputPacked(bool packed)
Configures whether the camera
rawframes are saved as MIPI-packed to memory. The packed format is more efficient, consuming less memory on device, and less data to send to host: RAW10: 4 pixels saved on 5 bytes, RAW12: 2 pixels saved on 3 bytes. When packing is disabled (false), data is saved lsb-aligned, e.g. a RAW10 pixel will be stored as uint16, on bits 9..0: 0b0000’00pp’pppp’pppp. Default is auto: enabled for standard color/monochrome cameras where ISP can work with both packed/unpacked, but disabled for other cameras like ToF.
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.
-
Output frameEvent = {*this, "frameEvent", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}}
Outputs metadata-only ImgFrame message as an early indicator of an incoming frame.
It’s sent on the MIPI SoF (start-of-frame) event, just after the exposure of the current frame has finished and before the exposure for next frame starts. Could be used to synchronize various processes with camera capture. Fields populated: camera id, sequence number, timestamp
Public Static Attributes
-
static constexpr const char *NAME = "ColorCamera"
Protected Functions
-
virtual Properties &getProperties()