### Navigation

- index
- next |
- previous |
- OpenCV 3.0.0-dev documentation »
- OpenCV API Reference »
- stitching. Images stitching »

# Image Blenders

## detail::Blender

class `detail::``Blender`

Base class for all blenders.

    class CV_EXPORTS Blender
    {
    public:
        virtual ~Blender() {}

        enum { NO, FEATHER, MULTI_BAND };
        static Ptr<Blender> createDefault(int type, bool try_gpu = false);

        void prepare(const std::vector<Point> &corners, const std::vector<Size> &sizes);
        virtual void prepare(Rect dst_roi);
        virtual void feed(const Mat &img, const Mat &mask, Point tl);
        virtual void blend(Mat &dst, Mat &dst_mask);

    protected:
        Mat dst_, dst_mask_;
        Rect dst_roi_;
    };

## detail::Blender::prepare

Prepares the blender for blending.

C++:`` void `detail::Blender::``prepare`(const std::vector<Point>& corners, const std::vector<Size>& sizes)

  Parameters: | corners – Source images top-left corners sizes – Source image sizes

## detail::Blender::feed

Processes the image.

C++:`` void `detail::Blender::``feed`(InputArray img, InputArray mask, Point tl)

  Parameters: | img – Source image mask – Source image mask tl – Source image top-left corners

## detail::Blender::blend

Blends and returns the final pano.

C++:`` void `detail::Blender::``blend`(InputOutputArray dst, InputOutputArray dst_mask)

  Parameters: | dst – Final pano dst_mask – Final pano mask

## detail::FeatherBlender

class `detail::``FeatherBlender` : public `detail::``Blender`

Simple blender which mixes images at its borders.

    class CV_EXPORTS FeatherBlender : public Blender
    {
    public:
        FeatherBlender(float sharpness = 0.02f) { setSharpness(sharpness); }

        float sharpness() const { return sharpness_; }
        void setSharpness(float val) { sharpness_ = val; }

        void prepare(Rect dst_roi);
        void feed(const Mat &img, const Mat &mask, Point tl);
        void blend(Mat &dst, Mat &dst_mask);

        // Creates weight maps for fixed set of source images by their masks and top-left corners.
        // Final image can be obtained by simple weighting of the source images.
        Rect createWeightMaps(const std::vector<Mat> &masks, const std::vector<Point> &corners,
                              std::vector<Mat> &weight_maps);

    private:
        /* hidden */
    };

See also

`detail::Blender`

## detail::MultiBandBlender

class `detail::``MultiBandBlender` : public `detail::``Blender`

Blender which uses multi-band blending algorithm (see [BA83]).

    class CV_EXPORTS MultiBandBlender : public Blender
    {
    public:
        MultiBandBlender(int try_gpu = false, int num_bands = 5);
        int numBands() const { return actual_num_bands_; }
        void setNumBands(int val) { actual_num_bands_ = val; }

        void prepare(Rect dst_roi);
        void feed(const Mat &img, const Mat &mask, Point tl);
        void blend(Mat &dst, Mat &dst_mask);

    private:
        /* hidden */
    };

See also

`detail::Blender`

## Help and Feedback

You did not find what you were looking for?

- Ask a question on the Q&A forum.
- If you think something is missing or wrong in the documentation, please file a bug report.

### Navigation

- index
- next |
- previous |
- OpenCV 3.0.0-dev documentation »
- OpenCV API Reference »
- stitching. Images stitching »