43
#ifndef OPENCV_STITCHING_STITCHER_HPP
 
44
#define OPENCV_STITCHING_STITCHER_HPP
 
46
#include "opencv2/core.hpp"
 
47
#include "opencv2/features2d.hpp"
 
48
#include "opencv2/stitching/warpers.hpp"
 
49
#include "opencv2/stitching/detail/matchers.hpp"
 
50
#include "opencv2/stitching/detail/motion_estimators.hpp"
 
51
#include "opencv2/stitching/detail/exposure_compensate.hpp"
 
52
#include "opencv2/stitching/detail/seam_finders.hpp"
 
53
#include "opencv2/stitching/detail/blenders.hpp"
 
54
#include "opencv2/stitching/detail/camera.hpp"
 
58
#  warning Detected X11 'Status' macro definition, it can cause build conflicts. Please, include this header before any X11 headers.
 
145
#if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1900
)
 
146
static
constexpr
double
ORIG_RESOL = -1.0;
 
155
ERR_NEED_MORE_IMGS = 1,
 
156
ERR_HOMOGRAPHY_EST_FAIL = 2,
 
157
ERR_CAMERA_PARAMS_ADJUST_FAIL = 3
 
186
CV_WRAP
double
registrationResol()
const
{
return
registr_resol_; }
 
187
CV_WRAP
void
setRegistrationResol(
double
resol_mpx) { registr_resol_ = resol_mpx; }
 
189
CV_WRAP
double
seamEstimationResol()
const
{
return
seam_est_resol_; }
 
190
CV_WRAP
void
setSeamEstimationResol(
double
resol_mpx) { seam_est_resol_ = resol_mpx; }
 
192
CV_WRAP
double
compositingResol()
const
{
return
compose_resol_; }
 
193
CV_WRAP
void
setCompositingResol(
double
resol_mpx) { compose_resol_ = resol_mpx; }
 
195
CV_WRAP
double
panoConfidenceThresh()
const
{
return
conf_thresh_; }
 
196
CV_WRAP
void
setPanoConfidenceThresh(
double
conf_thresh) { conf_thresh_ = conf_thresh; }
 
198
CV_WRAP
bool
waveCorrection()
const
{
return
do_wave_correct_; }
 
199
CV_WRAP
void
setWaveCorrection(
bool
flag) { do_wave_correct_ = flag; }
 
202
CV_WRAP
void
setInterpolationFlags(
InterpolationFlags
interp_flags) { interp_flags_ = interp_flags; }
 
204
detail::WaveCorrectKind waveCorrectKind()
const
{
return
wave_correct_kind_; }
 
205
void
setWaveCorrectKind(detail::WaveCorrectKind kind) { wave_correct_kind_ = kind; }
 
207
Ptr<Feature2D> featuresFinder() {
return
features_finder_; }
 
208
const
Ptr<Feature2D> featuresFinder()
const
{
return
features_finder_; }
 
209
void
setFeaturesFinder(Ptr<Feature2D> features_finder)
 
210
{ features_finder_ = features_finder; }
 
212
Ptr<detail::FeaturesMatcher> featuresMatcher() {
return
features_matcher_; }
 
213
const
Ptr<detail::FeaturesMatcher> featuresMatcher()
const
{
return
features_matcher_; }
 
214
void
setFeaturesMatcher(Ptr<detail::FeaturesMatcher> features_matcher)
 
215
{ features_matcher_ = features_matcher; }
 
217
const
cv::UMat& matchingMask()
const
{
return
matching_mask_; }
 
218
void
setMatchingMask(
const
cv::UMat
&mask)
 
220
CV_Assert(mask.type() == CV_8U && mask.cols == mask.rows);
 
221
matching_mask_ = mask.clone();
 
224
Ptr<detail::BundleAdjusterBase> bundleAdjuster() {
return
bundle_adjuster_; }
 
225
const
Ptr<detail::BundleAdjusterBase> bundleAdjuster()
const
{
return
bundle_adjuster_; }
 
226
void
setBundleAdjuster(Ptr<detail::BundleAdjusterBase> bundle_adjuster)
 
227
{ bundle_adjuster_ = bundle_adjuster; }
 
229
Ptr<detail::Estimator> estimator() {
return
estimator_; }
 
230
const
Ptr<detail::Estimator> estimator()
const
{
return
estimator_; }
 
231
void
setEstimator(Ptr<detail::Estimator> estimator)
 
232
{ estimator_ = estimator; }
 
234
Ptr<WarperCreator> warper() {
return
warper_; }
 
235
const
Ptr<WarperCreator> warper()
const
{
return
warper_; }
 
236
void
setWarper(Ptr<WarperCreator> creator) { warper_ = creator; }
 
238
Ptr<detail::ExposureCompensator> exposureCompensator() {
return
exposure_comp_; }
 
239
const
Ptr<detail::ExposureCompensator> exposureCompensator()
const
{
return
exposure_comp_; }
 
240
void
setExposureCompensator(Ptr<detail::ExposureCompensator> exposure_comp)
 
241
{ exposure_comp_ = exposure_comp; }
 
243
Ptr<detail::SeamFinder> seamFinder() {
return
seam_finder_; }
 
244
const
Ptr<detail::SeamFinder> seamFinder()
const
{
return
seam_finder_; }
 
245
void
setSeamFinder(Ptr<detail::SeamFinder> seam_finder) { seam_finder_ = seam_finder; }
 
247
Ptr<detail::Blender> blender() {
return
blender_; }
 
248
const
Ptr<detail::Blender> blender()
const
{
return
blender_; }
 
249
void
setBlender(Ptr<detail::Blender> b) { blender_ = b; }
 
260
CV_WRAP Status estimateTransform(InputArrayOfArrays images, InputArrayOfArrays masks = noArray());
 
271
const
std::vector<detail::CameraParams> &cameras,
 
272
const
std::vector<int> &component);
 
274
Status
setTransform(InputArrayOfArrays images,
const
std::vector<detail::CameraParams> &cameras);
 
289
CV_WRAP Status composePanorama(InputArrayOfArrays images,
OutputArray
pano);
 
292
CV_WRAP Status stitch(InputArrayOfArrays images,
OutputArray
pano);
 
300
CV_WRAP Status stitch(InputArrayOfArrays images, InputArrayOfArrays masks,
OutputArray
pano);
 
302
std::vector<int> component()
const
{
return
indices_; }
 
303
std::vector<detail::CameraParams> cameras()
const
{
return
cameras_; }
 
304
CV_WRAP
double
workScale()
const
{
return
work_scale_; }
 
305
UMat resultMask()
const
{
return
result_mask_; }
 
308
Status matchImages();
 
309
Status estimateCameraParams();
 
311
double
registr_resol_;
 
312
double
seam_est_resol_;
 
313
double
compose_resol_;
 
316
Ptr<Feature2D> features_finder_;
 
317
Ptr<detail::FeaturesMatcher> features_matcher_;
 
319
Ptr<detail::BundleAdjusterBase> bundle_adjuster_;
 
320
Ptr<detail::Estimator> estimator_;
 
321
bool
do_wave_correct_;
 
322
detail::WaveCorrectKind wave_correct_kind_;
 
323
Ptr<WarperCreator> warper_;
 
324
Ptr<detail::ExposureCompensator> exposure_comp_;
 
325
Ptr<detail::SeamFinder> seam_finder_;
 
326
Ptr<detail::Blender> blender_;
 
328
std::vector<cv::UMat> imgs_;
 
329
std::vector<cv::UMat> masks_;
 
330
std::vector<cv::Size> full_img_sizes_;
 
331
std::vector<detail::ImageFeatures> features_;
 
332
std::vector<detail::MatchesInfo> pairwise_matches_;
 
333
std::vector<cv::UMat> seam_est_imgs_;
 
334
std::vector<int> indices_;
 
335
std::vector<detail::CameraParams> cameras_;
 
339
double
seam_work_aspect_;
 
340
double
warped_image_scale_;
 
This type is very similar to InputArray except that it is used for input/output and output function p...
Definition:
mat.hpp:295
 
High level image stitcher.
Definition:
stitching.hpp:139
 
Mode
Definition:
stitching.hpp:161
 
@ PANORAMA
Definition:
stitching.hpp:167
 
Status setTransform(InputArrayOfArrays images, const std::vector< detail::CameraParams > &cameras)
 
static const double ORIG_RESOL
Definition:
stitching.hpp:149
 
Status setTransform(InputArrayOfArrays images, const std::vector< detail::CameraParams > &cameras, const std::vector< int > &component)
These function restors camera rotation and camera intrinsics of each camera that can be got with Stit...
 
#define CV_Assert(expr)
Checks a condition at runtime and throws exception if it fails
Definition:
base.hpp:342
 
CV_DEPRECATED Ptr< Stitcher > createStitcher(bool try_use_gpu=false)
 
CV_DEPRECATED Ptr< Stitcher > createStitcherScans(bool try_use_gpu=false)
 
"black box" representation of the file storage associated with a file on disk.
Definition:
aruco.hpp:75
 
Definition:
cvstd_wrapper.hpp:74