43#ifndef OPENCV_STITCHING_BLENDERS_HPP
44#define OPENCV_STITCHING_BLENDERS_HPP
47# warning Detected Apple 'NO' macro definition, it can cause build conflicts. Please, include this header before any Apple headers.
50#include "opencv2/core.hpp"
51#include "opencv2/core/cuda.hpp"
68 enum { NO, FEATHER, MULTI_BAND };
69 CV_WRAP
static Ptr<Blender> createDefault(
int type,
bool try_gpu =
false);
76 CV_WRAP
virtual void prepare(
const std::vector<Point> &corners,
const std::vector<Size> &sizes);
78 CV_WRAP
virtual void prepare(
Rect dst_roi);
85 CV_WRAP
virtual void feed(InputArray img, InputArray mask,
Point tl);
105 CV_WRAP
float sharpness()
const {
return sharpness_; }
106 CV_WRAP
void setSharpness(
float val) { sharpness_ = val; }
108 CV_WRAP
void prepare(
Rect dst_roi) CV_OVERRIDE;
109 CV_WRAP
void feed(InputArray img, InputArray mask,
Point tl) CV_OVERRIDE;
114 CV_WRAP
Rect createWeightMaps(
const std::vector<UMat> &masks,
const std::vector<Point> &corners,
115 CV_IN_OUT std::vector<UMat> &weight_maps);
120 UMat dst_weight_map_;
123inline FeatherBlender::FeatherBlender(
float _sharpness) { setSharpness(_sharpness); }
130 CV_WRAP
MultiBandBlender(
int try_gpu =
false,
int num_bands = 5,
int weight_type = CV_32F);
132 CV_WRAP
int numBands()
const {
return actual_num_bands_; }
133 CV_WRAP
void setNumBands(
int val) { actual_num_bands_ = val; }
135 CV_WRAP
void prepare(
Rect dst_roi) CV_OVERRIDE;
136 CV_WRAP
void feed(InputArray img, InputArray mask,
Point tl) CV_OVERRIDE;
140 int actual_num_bands_, num_bands_;
141 std::vector<UMat> dst_pyr_laplace_;
142 std::vector<UMat> dst_band_weights_;
146#if defined(HAVE_OPENCV_CUDAARITHM) && defined(HAVE_OPENCV_CUDAWARPING)
147 std::vector<cuda::GpuMat> gpu_dst_pyr_laplace_;
148 std::vector<cuda::GpuMat> gpu_dst_band_weights_;
149 std::vector<Point> gpu_tl_points_;
150 std::vector<cuda::GpuMat> gpu_imgs_with_border_;
151 std::vector<std::vector<cuda::GpuMat> > gpu_weight_pyr_gauss_vec_;
152 std::vector<std::vector<cuda::GpuMat> > gpu_src_pyr_laplace_vec_;
153 std::vector<std::vector<cuda::GpuMat> > gpu_ups_;
160 bool gpu_initialized_;
168void CV_EXPORTS_W normalizeUsingWeightMap(InputArray weight, CV_IN_OUT
InputOutputArray src);
170void CV_EXPORTS_W createWeightMap(InputArray mask,
float sharpness, CV_IN_OUT
InputOutputArray weight);
172void CV_EXPORTS_W createLaplacePyr(InputArray img,
int num_levels, CV_IN_OUT std::vector<UMat>& pyr);
173void CV_EXPORTS_W createLaplacePyrGpu(InputArray img,
int num_levels, CV_IN_OUT std::vector<UMat>& pyr);
176void CV_EXPORTS_W restoreImageFromLaplacePyr(CV_IN_OUT std::vector<UMat>& pyr);
177void CV_EXPORTS_W restoreImageFromLaplacePyrGpu(CV_IN_OUT std::vector<UMat>& pyr);
Template class for 2D rectangles
Definition: core/types.hpp:421
Base storage class for GPU memory with reference counting.
Definition: core/cuda.hpp:106
Base class for all blenders.
Definition: blenders.hpp:64
Simple blender which mixes images at its borders.
Definition: blenders.hpp:101
Blender which uses multi-band blending algorithm (see ).
Definition: blenders.hpp:128
"black box" representation of the file storage associated with a file on disk.
Definition: aruco.hpp:75
Definition: cvstd_wrapper.hpp:74