opencv/modules/stitching/doc/blenders.rst

116 lines
3.1 KiB
ReStructuredText
Raw Normal View History

2012-01-19 17:43:13 +08:00
Image Blenders
==============
.. highlight:: cpp
detail::Blender
---------------
.. ocv:class:: detail::Blender
Base class for all blenders. ::
2012-01-19 17:43:13 +08:00
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);
2012-01-19 17:43:13 +08:00
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_;
};
2012-01-26 21:28:04 +08:00
detail::Blender::prepare
------------------------
Prepares the blender for blending.
.. ocv:function:: void detail::Blender::prepare(const std::vector<Point> &corners, const std::vector<Size> &sizes)
:param corners: Source images top-left corners
:param sizes: Source image sizes
detail::Blender::feed
---------------------
Processes the image.
.. ocv:function:: void detail::Blender::feed(const Mat &img, const Mat &mask, Point tl)
:param img: Source image
2012-01-30 14:53:50 +08:00
:param mask: Source image mask
2012-01-26 21:28:04 +08:00
:param tl: Source image top-left corners
detail::Blender::blend
----------------------
Blends and returns the final pano.
.. ocv:function:: void detail::Blender::blend(Mat &dst, Mat &dst_mask)
:param dst: Final pano
:param dst_mask: Final pano mask
2012-01-19 17:43:13 +08:00
detail::FeatherBlender
----------------------
.. ocv:class:: detail::FeatherBlender : public detail::Blender
2012-01-19 17:43:13 +08:00
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:
2012-01-30 15:06:35 +08:00
/* hidden */
2012-01-19 17:43:13 +08:00
};
.. seealso:: :ocv:class:`detail::Blender`
detail::MultiBandBlender
------------------------
.. ocv:class:: detail::MultiBandBlender : public detail::Blender
2012-01-19 17:43:13 +08:00
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:
2012-01-30 15:06:35 +08:00
/* hidden */
2012-01-19 17:43:13 +08:00
};
.. seealso:: :ocv:class:`detail::Blender`