Program Listing for File ImageAlign.hpp

Return to documentation for file (include/depthai/pipeline/node/ImageAlign.hpp)

#pragma once

#include <depthai/pipeline/Node.hpp>

// shared
#include <depthai-shared/properties/ImageAlignProperties.hpp>

#include "depthai/pipeline/datatype/ImageAlignConfig.hpp"

namespace dai {
namespace node {

class ImageAlign : public NodeCRTP<Node, ImageAlign, ImageAlignProperties> {
   public:
    constexpr static const char* NAME = "ImageAlign";

   protected:
    Properties& getProperties();

   private:
    std::shared_ptr<RawImageAlignConfig> rawConfig;

   public:
    ImageAlign(const std::shared_ptr<PipelineImpl>& par, int64_t nodeId);
    ImageAlign(const std::shared_ptr<PipelineImpl>& par, int64_t nodeId, std::unique_ptr<Properties> props);

    ImageAlignConfig initialConfig;

    Input inputConfig{*this, "inputConfig", Input::Type::SReceiver, false, 4, {{DatatypeEnum::ImageAlignConfig, false}}};

    Input input{*this, "input", Input::Type::SReceiver, false, 4, true, {{DatatypeEnum::ImgFrame, false}}};

    Input inputAlignTo{*this, "inputAlignTo", Input::Type::SReceiver, false, 1, true, {{DatatypeEnum::ImgFrame, false}}};

    Output outputAligned{*this, "outputAligned", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}};

    Output passthroughInput{*this, "passthroughInput", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}};

    ImageAlign& setOutputSize(int alignWidth, int alignHeight);

    ImageAlign& setOutKeepAspectRatio(bool keep);

    ImageAlign& setInterpolation(Interpolation interp);

    ImageAlign& setNumShaves(int numShaves);

    ImageAlign& setNumFramesPool(int numFramesPool);
};

}  // namespace node
}  // namespace dai