ImageManip

ImageManip node can be used to crop, rotate rectangle area or perform various image transforms: rotate, mirror, flip, perspective transform.

How to place it

pipeline = dai.Pipeline()
manip = pipeline.createImageManip()
dai::Pipeline pipeline;
auto manip = pipeline.create<dai::node::ImageManip>();

Inputs and Outputs

               ┌───────────────────┐
inputImage     │                   │
──────────────►│                   │
               │                   │        out
               │    ImageManip     ├───────────►
inputConfig    │                   │
──────────────►│                   │
               │                   │
               └───────────────────┘

Message types

Usage

pipeline = dai.Pipeline()
manip = pipeline.createImageManip()

manip.initialConfig.setResize(300, 300)
manip.initialConfig.setFrameType(dai.ImgFrame.Type.BGR888p)
dai::Pipeline pipeline;
auto manip = pipeline.create<dai::node::ImageManip>();

manip->initialConfig.setResize(300, 300);
manip->initialConfig.setFrameType(dai::ImgFrame::Type::BGR888p);

Reference

class depthai.ImageManip

ImageManip node. Capability to crop, resize, warp, … incoming image frames

class Connection

Connection between an Input and Output

class Id

Node identificator. Unique for every node on a single Pipeline

getAssets(self: depthai.Node) → List[depthai.Asset]

Retrieves all nodes assets

getInputs(self: depthai.Node) → List[dai::Node::Input]

Retrieves all nodes inputs

getName(self: depthai.Node)str

Retrieves nodes name

getOutputs(self: depthai.Node) → List[dai::Node::Output]

Retrieves all nodes outputs

property id

Id of node

property initialConfig

Initial config to use when manipulating frames

property inputConfig

Input ImageManipConfig message with ability to modify parameters in runtime Default queue is blocking with size 8

property inputImage

Input image to be modified Default queue is blocking with size 8

property out

Outputs ImgFrame message that carries modified image.

setCenterCrop(self: depthai.ImageManip, arg0: float, arg1: float)None
setCropRect(self: depthai.ImageManip, arg0: float, arg1: float, arg2: float, arg3: float)None
setFrameType(self: depthai.ImageManip, arg0: dai::RawImgFrame::Type)None
setHorizontalFlip(self: depthai.ImageManip, arg0: bool)None
setKeepAspectRatio(self: depthai.ImageManip, arg0: bool)None
setMaxOutputFrameSize(self: depthai.ImageManip, arg0: int)None

Specify maximum size of output image.

Parameter maxFrameSize:

Maximum frame size in bytes

setNumFramesPool(self: depthai.ImageManip, arg0: int)None

Specify number of frames in pool.

Parameter numFramesPool:

How many frames should the pool have

setResize(self: depthai.ImageManip, arg0: int, arg1: int)None
setResizeThumbnail(self: depthai.ImageManip, arg0: int, arg1: int, arg2: int, arg3: int, arg4: int)None
setWaitForConfigInput(self: depthai.ImageManip, arg0: bool)None

Specify whether or not wait until configuration message arrives to inputConfig Input.

Parameter wait:

True to wait for configuration message, false otherwise

class dai::node::ImageManip : public dai::Node

ImageManip node. Capability to crop, resize, warp, … incoming image frames.

Public Types

using Properties = dai::ImageManipProperties

Public Functions

ImageManip(const std::shared_ptr<PipelineImpl> &par, int64_t nodeId)
void setCropRect(float xmin, float ymin, float xmax, float ymax)
void setCenterCrop(float ratio, float whRatio = 1.0f)
void setResize(int w, int h)
void setResizeThumbnail(int w, int h, int bgRed = 0, int bgGreen = 0, int bgBlue = 0)
void setFrameType(dai::RawImgFrame::Type name)
void setHorizontalFlip(bool flip)
void setKeepAspectRatio(bool keep)
void setWaitForConfigInput(bool wait)

Specify whether or not wait until configuration message arrives to inputConfig Input.

Parameters
  • wait: True to wait for configuration message, false otherwise

void setNumFramesPool(int numFramesPool)

Specify number of frames in pool.

Parameters
  • numFramesPool: How many frames should the pool have

void setMaxOutputFrameSize(int maxFrameSize)

Specify maximum size of output image.

Parameters
  • maxFrameSize: Maximum frame size in bytes

Public Members

ImageManipConfig initialConfig

Initial config to use when manipulating frames

Input inputConfig = {*this, "inputConfig", Input::Type::SReceiver, true, 8, {{DatatypeEnum::ImageManipConfig, true}}}

Input ImageManipConfig message with ability to modify parameters in runtime Default queue is blocking with size 8

Input inputImage = {*this, "inputImage", Input::Type::SReceiver, true, 8, {{DatatypeEnum::ImgFrame, true}}}

Input image to be modified Default queue is blocking with size 8

Output out = {*this, "out", Output::Type::MSender, {{DatatypeEnum::ImgFrame, true}}}

Outputs ImgFrame message that carries modified image.

Private Functions

std::string getName() const override

Retrieves nodes name.

std::vector<Input> getInputs() override

Retrieves all nodes inputs.

std::vector<Output> getOutputs() override

Retrieves all nodes outputs.

nlohmann::json getProperties() override
std::shared_ptr<Node> clone() override

Private Members

Properties properties
std::shared_ptr<RawImageManipConfig> rawConfig

Got questions?

We’re always happy to help with code or other questions you might have.