38 feat.
img_idx = arr.
at(
"img_idx", idx).toInt();
39 feat.
img_size = arr.
at(
"img_size", idx).toSize();
41 if (arr.
isField(
"descriptors")) {
50 matches_info.
src_img_idx = arr.
at(
"src_img_idx", idx).toInt();
51 matches_info.
dst_img_idx = arr.
at(
"dst_img_idx", idx).toInt();
54 matches_info.
num_inliers = arr.
at(
"num_inliers", idx).toInt();
55 matches_info.
H = arr.
at(
"H", idx).toMat();
56 matches_info.
confidence = arr.
at(
"confidence", idx).toDouble();
63 params.
aspect = arr.
at(
"aspect", idx).toDouble();
64 params.
focal = arr.
at(
"focal", idx).toDouble();
65 params.
ppx = arr.
at(
"ppx", idx).toDouble();
66 params.
ppy = arr.
at(
"ppy", idx).toDouble();
67 params.
R = arr.
at(
"R", idx).toMat();
68 params.
t = arr.
at(
"t", idx).toMat();
85 "MxArray unable to convert to vector<cv::detail::ImageFeatures>");
102 "MxArray unable to convert to vector<cv::detail::MatchesInfo>");
112 for (
mwIndex i = 0; i < n; ++i)
115 for (
mwIndex i = 0; i < n; ++i)
119 "MxArray unable to convert to vector<cv::detail::CameraParams>");
125 const char *fields[] = {
"img_idx",
"img_size",
"keypoints",
"descriptors"};
136 const char *fields[] = {
"img_idx",
"img_size",
"keypoints",
"descriptors"};
139 s.
set(
"img_idx", features[i].img_idx, i);
140 s.
set(
"img_size", features[i].img_size, i);
141 s.
set(
"keypoints", features[i].keypoints, i);
142 s.
set(
"descriptors", features[i].descriptors.getMat(
ACCESS_READ), i);
149 const char *fields[] = {
"src_img_idx",
"dst_img_idx",
"matches",
150 "inliers_mask",
"num_inliers",
"H",
"confidence"};
157 s.
set(
"H", matches_info.
H);
164 const char *fields[] = {
"src_img_idx",
"dst_img_idx",
"matches",
165 "inliers_mask",
"num_inliers",
"H",
"confidence"};
167 for (
mwIndex i = 0; i < pairwise_matches.
size(); ++i) {
168 s.
set(
"src_img_idx", pairwise_matches[i].src_img_idx, i);
169 s.
set(
"dst_img_idx", pairwise_matches[i].dst_img_idx, i);
170 s.
set(
"matches", pairwise_matches[i].matches, i);
171 s.
set(
"inliers_mask", pairwise_matches[i].inliers_mask, i);
172 s.
set(
"num_inliers", pairwise_matches[i].num_inliers, i);
173 s.
set(
"H", pairwise_matches[i].H, i);
174 s.
set(
"confidence", pairwise_matches[i].confidence, i);
181 const char *fields[] = {
"aspect",
"focal",
"ppx",
"ppy",
"R",
"t",
"K"};
187 s.
set(
"R", params.
R);
188 s.
set(
"t", params.
t);
189 s.
set(
"K", params.
K());
195 const char *fields[] = {
"aspect",
"focal",
"ppx",
"ppy",
"R",
"t",
"K"};
198 s.
set(
"aspect", cameras[i].aspect, i);
199 s.
set(
"focal", cameras[i].focal, i);
200 s.
set(
"ppx", cameras[i].ppx, i);
201 s.
set(
"ppy", cameras[i].ppy, i);
202 s.
set(
"R", cameras[i].R, i);
203 s.
set(
"t", cameras[i].t, i);
204 s.
set(
"K", cameras[i].K(), i);
216 s.
set(
"TypeId",
string(
typeid(*p).name()));
226 s.
set(
"TypeId",
string(
typeid(*p).name()));
236 s.
set(
"TypeId",
string(
typeid(*p).name()));
245 s.
set(
"TypeId",
string(
typeid(*p).name()));
257 s.
set(
"TypeId",
string(
typeid(*p).name()));
266 s.
set(
"TypeId",
string(
typeid(*p).name()));
275 s.
set(
"TypeId",
string(
typeid(*p).name()));
289 s.
set(
"TypeId",
string(
typeid(*p).name()));
314 int nfeatures = 1500;
315 float scaleFactor = 1.3f;
317 for (; first != last; first += 2) {
318 string key(first->toString());
319 const MxArray& val = *(first + 1);
320 if (key ==
"GridSize")
321 grid_size = val.toSize();
322 else if (key ==
"NFeatures")
323 nfeatures = val.toInt();
324 else if (key ==
"ScaleFactor")
325 scaleFactor = val.toFloat();
326 else if (key ==
"NLevels")
327 nlevels = val.toInt();
330 "Unrecognized option %s", key.c_str());
332 return makePtr<OrbFeaturesFinder>(grid_size, nfeatures, scaleFactor, nlevels);
342 int descriptor_size = 0;
343 int descriptor_channels = 3;
346 int nOctaveLayers = 4;
348 for (; first != last; first += 2) {
349 string key(first->toString());
350 const MxArray& val = *(first + 1);
351 if (key ==
"DescriptorType")
353 else if (key ==
"DescriptorSize")
354 descriptor_size = val.toInt();
355 else if (key ==
"DescriptorChannels")
356 descriptor_channels = val.toInt();
357 else if (key ==
"Threshold")
359 else if (key ==
"NOctaves")
360 nOctaves = val.toInt();
361 else if (key ==
"NOctaveLayers")
362 nOctaveLayers = val.toInt();
363 else if (key ==
"Diffusivity")
368 "Unrecognized option %s", key.c_str());
370 return makePtr<AKAZEFeaturesFinder>(descriptor_type, descriptor_size,
371 descriptor_channels,
threshold, nOctaves, nOctaveLayers, diffusivity);
374 #ifdef HAVE_OPENCV_XFEATURES2D 381 double hess_thresh = 300.0;
384 int num_octaves_descr = 3;
385 int num_layers_descr = 4;
386 for (; first != last; first += 2) {
387 string key(first->toString());
388 const MxArray& val = *(first + 1);
389 if (key ==
"HessThresh")
391 else if (key ==
"NumOctaves")
392 num_octaves = val.toInt();
393 else if (key ==
"NumLayers")
394 num_layers = val.toInt();
395 else if (key ==
"NumOctaveDescr")
396 num_octaves_descr = val.toInt();
397 else if (key ==
"NumLayersDesc")
398 num_layers_descr = val.toInt();
401 "Unrecognized option %s", key.c_str());
403 return makePtr<SurfFeaturesFinder>(hess_thresh, num_octaves, num_layers,
404 num_octaves_descr, num_layers_descr);
414 if (
type ==
"OrbFeaturesFinder")
416 else if (
type ==
"AKAZEFeaturesFinder")
418 #ifdef HAVE_OPENCV_XFEATURES2D 419 else if (
type ==
"SurfFeaturesFinder")
423 else if (
type ==
"SurfFeaturesFinderGpu")
424 p = createSurfFeaturesFinderGpu(first, last);
429 "Unrecognized features finder %s",
type.c_str());
432 "Failed to create FeaturesFinder");
442 bool try_use_gpu =
false;
443 float match_conf = 0.3f;
444 int num_matches_thresh1 = 6;
445 int num_matches_thresh2 = 6;
446 for (; first != last; first += 2) {
447 string key(first->toString());
448 const MxArray& val = *(first + 1);
449 if (key ==
"TryUseGPU")
450 try_use_gpu = val.
toBool();
451 else if (key ==
"MatchConf")
452 match_conf = val.toFloat();
453 else if (key ==
"NumMatchesThresh1")
454 num_matches_thresh1 = val.toInt();
455 else if (key ==
"NumMatchesThresh2")
456 num_matches_thresh2 = val.toInt();
459 "Unrecognized option %s", key.c_str());
461 return makePtr<BestOf2NearestMatcher>(try_use_gpu,
462 match_conf, num_matches_thresh1, num_matches_thresh2);
472 bool try_use_gpu =
false;
473 float match_conf = 0.3f;
474 int num_matches_thresh1 = 6;
475 int num_matches_thresh2 = 6;
476 for (; first != last; first += 2) {
477 string key(first->toString());
478 const MxArray& val = *(first + 1);
479 if (key ==
"RangeWidth")
480 range_width = val.
toInt();
481 else if (key ==
"TryUseGPU")
482 try_use_gpu = val.toBool();
483 else if (key ==
"MatchConf")
484 match_conf = val.toFloat();
485 else if (key ==
"NumMatchesThresh1")
486 num_matches_thresh1 = val.toInt();
487 else if (key ==
"NumMatchesThresh2")
488 num_matches_thresh2 = val.toInt();
491 "Unrecognized option %s", key.c_str());
493 return makePtr<BestOf2NearestRangeMatcher>(range_width, try_use_gpu,
494 match_conf, num_matches_thresh1, num_matches_thresh2);
503 bool full_affine =
false;
504 bool try_use_gpu =
false;
505 float match_conf = 0.3f;
506 int num_matches_thresh1 = 6;
507 for (; first != last; first += 2) {
508 string key(first->toString());
509 const MxArray& val = *(first + 1);
510 if (key ==
"FullAffine")
511 full_affine = val.
toBool();
512 else if (key ==
"TryUseGPU")
513 try_use_gpu = val.toBool();
514 else if (key ==
"MatchConf")
515 match_conf = val.toFloat();
516 else if (key ==
"NumMatchesThresh1")
517 num_matches_thresh1 = val.toInt();
520 "Unrecognized option %s", key.c_str());
522 return makePtr<AffineBestOf2NearestMatcher>(full_affine, try_use_gpu,
523 match_conf, num_matches_thresh1);
532 if (
type ==
"BestOf2NearestMatcher")
534 else if (
type ==
"BestOf2NearestRangeMatcher")
536 else if (
type ==
"AffineBestOf2NearestMatcher")
540 "Unrecognized features matcher %s",
type.c_str());
543 "Failed to create FeaturesMatcher");
553 bool is_focals_estimated =
false;
554 for (; first != last; first += 2) {
555 string key(first->toString());
556 const MxArray& val = *(first + 1);
557 if (key ==
"IsFocalsEstimated")
558 is_focals_estimated = val.
toBool();
561 "Unrecognized option %s", key.c_str());
563 return makePtr<HomographyBasedEstimator>(is_focals_estimated);
573 if (
type ==
"HomographyBasedEstimator")
575 else if (
type ==
"AffineBasedEstimator") {
577 p = makePtr<AffineBasedEstimator>();
581 "Unrecognized estimator %s",
type.c_str());
595 if (
type ==
"NoBundleAdjuster")
596 p = makePtr<NoBundleAdjuster>();
597 else if (
type ==
"BundleAdjusterRay")
598 p = makePtr<BundleAdjusterRay>();
599 else if (
type ==
"BundleAdjusterReproj")
600 p = makePtr<BundleAdjusterReproj>();
601 else if (
type ==
"BundleAdjusterAffine")
602 p = makePtr<BundleAdjusterAffine>();
603 else if (
type ==
"BundleAdjusterAffinePartial")
604 p = makePtr<BundleAdjusterAffinePartial>();
607 "Unrecognized bundle adjuster %s",
type.c_str());
610 "Failed to create BundleAdjusterBase");
611 for (; first != last; first += 2) {
612 string key(first->toString());
613 const MxArray& val = *(first + 1);
614 if (key ==
"ConfThresh")
616 else if (key ==
"RefinementMask")
618 else if (key ==
"TermCriteria")
622 "Unrecognized option %s", key.c_str());
635 for (; first != last; first += 2) {
636 string key(first->toString());
637 const MxArray& val = *(first + 1);
644 "Unrecognized option %s", key.c_str());
646 return makePtr<cv::CompressedRectilinearWarper>(A, B);
657 for (; first != last; first += 2) {
658 string key(first->toString());
659 const MxArray& val = *(first + 1);
666 "Unrecognized option %s", key.c_str());
668 return makePtr<cv::CompressedRectilinearPortraitWarper>(A, B);
679 for (; first != last; first += 2) {
680 string key(first->toString());
681 const MxArray& val = *(first + 1);
688 "Unrecognized option %s", key.c_str());
690 return makePtr<cv::PaniniWarper>(A, B);
701 for (; first != last; first += 2) {
702 string key(first->toString());
703 const MxArray& val = *(first + 1);
710 "Unrecognized option %s", key.c_str());
712 return makePtr<cv::PaniniPortraitWarper>(A, B);
722 if (
type ==
"PlaneWarper") {
724 p = makePtr<cv::PlaneWarper>();
726 else if (
type ==
"AffineWarper") {
728 p = makePtr<cv::AffineWarper>();
730 else if (
type ==
"CylindricalWarper") {
732 p = makePtr<cv::CylindricalWarper>();
734 else if (
type ==
"SphericalWarper") {
736 p = makePtr<cv::SphericalWarper>();
740 else if (
type ==
"PlaneWarperGpu")
741 p = makePtr<PlaneWarperGpu>();
742 else if (
type ==
"CylindricalWarperGpu")
743 p = makePtr<CylindricalWarperGpu>();
744 else if (
type ==
"SphericalWarperGpu")
745 p = makePtr<SphericalWarperGpu>();
747 else if (
type ==
"FisheyeWarper") {
749 p = makePtr<cv::FisheyeWarper>();
751 else if (
type ==
"StereographicWarper") {
753 p = makePtr<cv::StereographicWarper>();
755 else if (
type ==
"CompressedRectilinearWarper")
757 else if (
type ==
"CompressedRectilinearPortraitWarper")
759 else if (
type ==
"PaniniWarper")
761 else if (
type ==
"PaniniPortraitWarper")
763 else if (
type ==
"MercatorWarper") {
765 p = makePtr<cv::MercatorWarper>();
767 else if (
type ==
"TransverseMercatorWarper") {
769 p = makePtr<cv::TransverseMercatorWarper>();
773 "Unrecognized warper creator %s",
type.c_str());
797 for (; first != last; first += 2) {
798 string key(first->toString());
799 const MxArray& val = *(first + 1);
801 bl_width = val.
toInt();
802 else if (key ==
"Heigth")
803 bl_height = val.toInt();
806 "Unrecognized option %s", key.c_str());
808 return makePtr<BlocksGainCompensator>(bl_width, bl_height);
819 if (
type ==
"NoExposureCompensator") {
821 p = makePtr<NoExposureCompensator>();
823 else if (
type ==
"GainCompensator") {
825 p = makePtr<GainCompensator>();
827 else if (
type ==
"BlocksGainCompensator")
831 "Unrecognized exposure compensator %s",
type.c_str());
834 "Failed to create ExposureCompensator");
845 for (; first != last; first += 2) {
846 string key(first->toString());
847 const MxArray& val = *(first + 1);
848 if (key ==
"CostFunction")
852 "Unrecognized option %s", key.c_str());
854 return makePtr<DpSeamFinder>(costFunc);
864 float terminal_cost = 10000.0f;
865 float bad_region_penalty = 1000.0f;
866 for (; first != last; first += 2) {
867 string key(first->toString());
868 const MxArray& val = *(first + 1);
869 if (key ==
"CostType")
871 else if (key ==
"TerminalCost")
872 terminal_cost = val.toFloat();
873 else if (key ==
"BadRegionPenaly")
874 bad_region_penalty = val.toFloat();
877 "Unrecognized option %s", key.c_str());
879 return makePtr<GraphCutSeamFinder>(cost_type, terminal_cost, bad_region_penalty);
889 if (
type ==
"NoSeamFinder") {
891 p = makePtr<NoSeamFinder>();
893 else if (
type ==
"VoronoiSeamFinder") {
895 p = makePtr<VoronoiSeamFinder>();
897 else if (
type ==
"DpSeamFinder")
899 else if (
type ==
"GraphCutSeamFinder")
903 else if (
type ==
"GraphCutSeamFinderGpu")
904 p = createGraphCutSeamFinderGpu(first, last);
908 "Unrecognized seam finder %s",
type.c_str());
920 float sharpness = 0.02f;
921 for (; first != last; first += 2) {
922 string key(first->toString());
923 const MxArray& val = *(first + 1);
924 if (key ==
"Sharpness")
928 "Unrecognized option %s", key.c_str());
930 return makePtr<FeatherBlender>(sharpness);
942 for (; first != last; first += 2) {
943 string key(first->toString());
944 const MxArray& val = *(first + 1);
947 else if (key ==
"NumBands")
948 num_bands = val.toInt();
949 else if (key ==
"WeightType")
950 weight_type = (val.isChar()) ?
954 "Unrecognized option %s", key.c_str());
956 return makePtr<MultiBandBlender>(try_gpu, num_bands, weight_type);
967 if (
type ==
"NoBlender") {
969 p = makePtr<Blender>();
971 else if (
type ==
"FeatherBlender")
973 else if (
type ==
"MultiBandBlender")
977 "Unrecognized blender %s",
type.c_str());
CostFunction costFunction() const
const ConstMap< std::string, int > GraphCutCostTypeMap
Graph-Cut cost types.
const ConstMap< std::string, int > ClassNameMap
Translates class name used in MATLAB to equivalent OpenCV depth.
MxArray toStruct(const ImageFeatures &feat)
Convert image features to scalar struct.
Ptr< cv::CompressedRectilinearWarper > createCompressedRectilinearWarper(vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of CompressedRectilinearWarper using options in arguments.
int toInt() const
Convert MxArray to int.
Ptr< OrbFeaturesFinder > createOrbFeaturesFinder(vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of OrbFeaturesFinder using options in arguments.
const ConstMap< string, int > AKAZEDescriptorType
AKAZE descriptor type.
mwSize numel() const
Number of elements in an array.
Common definitions for the stitching module.
T at(mwIndex index) const
Template for numeric array element accessor.
vector< CameraParams > MxArrayToVectorCameraParams(const MxArray &arr)
Convert MxArray to std::vector<cv::details::CameraParams>
Ptr< FeaturesFinder > createFeaturesFinder(const string &type, vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of FeaturesFinder using options in arguments.
ImageFeatures MxArrayToImageFeatures(const MxArray &arr, mwIndex idx)
Convert MxArray to cv::details::ImageFeatures.
Ptr< cv::PaniniWarper > createPaniniWarper(vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of PaniniWarper using options in arguments.
Ptr< RotationWarper > createRotationWarper(const string &type, vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last, float scale)
Create an instance of RotationWarper using options in arguments.
cv::Ptr< cv::detail::SurfFeaturesFinder > createSurfFeaturesFinder(std::vector< MxArray >::const_iterator first, std::vector< MxArray >::const_iterator last)
Create an instance of SurfFeaturesFinder using options in arguments.
std::vector< uchar > inliers_mask
double confThresh() const
Ptr< FeaturesMatcher > createFeaturesMatcher(const string &type, vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of FeaturesMatcher using options in arguments.
const ConstMap< string, int > KAZEDiffusivityType
KAZE Diffusivity type.
Ptr< cv::CompressedRectilinearPortraitWarper > createCompressedRectilinearPortraitWarper(vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of CompressedRectilinearPortraitWarper using options in arguments.
void set(mwIndex index, const T &value)
Template for numeric array element write accessor.
Ptr< BlocksGainCompensator > createBlocksGainCompensator(vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of BlocksGainCompensator using options in arguments.
bool isThreadSafe() const
Ptr< BestOf2NearestRangeMatcher > createBestOf2NearestRangeMatcher(vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of BestOf2NearestRangeMatcher using options in arguments.
Mat getMat(int flags) const
vector< MatchesInfo > MxArrayToVectorMatchesInfo(const MxArray &arr)
Convert MxArray to std::vector<cv::details::MatchesInfo>
Ptr< AKAZEFeaturesFinder > createAKAZEFeaturesFinder(vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of AKAZEFeaturesFinder using options in arguments.
Ptr< FeatherBlender > createFeatherBlender(vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of FeatherBlender using options in arguments.
bool toBool() const
Convert MxArray to bool.
Ptr< Y > dynamicCast() const
LIBMWMEX_API_EXTERN_C void mexErrMsgIdAndTxt(const char *identifier, const char *err_msg,...)
Issue formatted error message with corresponding error identifier and return to MATLAB prompt...
Ptr< Blender > createBlender(const string &type, vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of Blender using options in arguments.
virtual Ptr< detail::RotationWarper > create(float scale) const=0
float toFloat() const
Convert MxArray to float.
std::vector< DMatch > matches
void setTermCriteria(const TermCriteria &term_criteria)
void setConfThresh(double conf_thresh)
bool isCell() const
Determine whether input is cell array.
size_t mwIndex
unsigned pointer-width integer
void setRefinementMask(const Mat &mask)
bool isField(const std::string &fieldName) const
Determine whether a struct array has a specified field.
mxArray object wrapper for data conversion and manipulation.
void nargchk(bool cond)
Alias for input/output arguments number check.
static MxArray Struct(const char **fields=NULL, int nfields=0, mwSize m=1, mwSize n=1)
Create a new struct array.
Ptr< GraphCutSeamFinder > createGraphCutSeamFinder(vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of GraphCutSeamFinder using options in arguments.
bool isStruct() const
Determine whether input is structure array.
Ptr< MultiBandBlender > createMultiBandBlender(vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of MultiBandBlender using options in arguments.
vector< ImageFeatures > MxArrayToVectorImageFeatures(const MxArray &arr)
Convert MxArray std::vector<cv::details::ImageFeatures>
Ptr< cv::PaniniPortraitWarper > createPaniniPortraitWarper(vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of PaniniPortraitWarper using options in arguments.
const ConstMap< std::string, cv::detail::DpSeamFinder::CostFunction > DpCostFunctionMap
Cost function types.
Ptr< DpSeamFinder > createDpSeamFinder(vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of DpSeamFinder using options in arguments.
Ptr< WarperCreator > createWarperCreator(const string &type, vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of WarperCreator using options in arguments.
double threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type)
Ptr< Estimator > createEstimator(const string &type, vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of Estimator using options in arguments.
double toDouble() const
Convert MxArray to double.
Ptr< SeamFinder > createSeamFinder(const string &type, vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of SeamFinder using options in arguments.
TermCriteria termCriteria()
const Mat refinementMask() const
CameraParams MxArrayToCameraParams(const MxArray &arr, mwIndex idx)
Convert MxArray to cv::details::CameraParams.
std::vector< KeyPoint > keypoints
Ptr< BestOf2NearestMatcher > createBestOf2NearestMatcher(vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of BestOf2NearestMatcher using options in arguments.
std::map wrapper with one-line initialization and lookup method.
Ptr< ExposureCompensator > createExposureCompensator(const string &type, vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of ExposureCompensator using options in arguments.
Ptr< AffineBestOf2NearestMatcher > createAffineBestOf2NearestMatcher(vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of AffineBestOf2NearestMatcher using options in arguments.
Ptr< BundleAdjusterBase > createBundleAdjusterBase(const string &type, vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of BundleAdjusterBase using options in arguments.
MatchesInfo MxArrayToMatchesInfo(const MxArray &arr, mwIndex idx)
Convert MxArray to cv::details::MatchesInfo.
Ptr< HomographyBasedEstimator > createHomographyBasedEstimator(vector< MxArray >::const_iterator first, vector< MxArray >::const_iterator last)
Create an instance of HomographyBasedEstimator using options in arguments.