Skip to content

Commit

Permalink
Exported a high level stitcher the DLL
Browse files Browse the repository at this point in the history
allows Stitcher to be used for scans from within python.
I had to use very strange notation because I couldn't export the `enum`
`Mode` making the Cpython generated code unable to compile.

```c++
class Stitcher {
public:
enum Mode
    {
        PANORAMA = 0,
        SCANS = 1,
    };
...
```

Also removed duplicate code from the `createStitcher` function making
use of the `Stitcher::create` function
  • Loading branch information
hmaarrfk committed Jan 24, 2018
1 parent c401168 commit df43429
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 35 deletions.
1 change: 1 addition & 0 deletions modules/stitching/include/opencv2/stitching.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,7 @@ class CV_EXPORTS_W Stitcher
};

CV_EXPORTS_W Ptr<Stitcher> createStitcher(bool try_use_gpu = false);
CV_EXPORTS_W Ptr<Stitcher> createStitcherScans(bool try_use_gpu = false);

//! @} stitching

Expand Down
41 changes: 6 additions & 35 deletions modules/stitching/src/stitcher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -606,42 +606,13 @@ Ptr<Stitcher> createStitcher(bool try_use_gpu)
{
CV_INSTRUMENT_REGION()

Ptr<Stitcher> stitcher = makePtr<Stitcher>();
stitcher->setRegistrationResol(0.6);
stitcher->setSeamEstimationResol(0.1);
stitcher->setCompositingResol(Stitcher::ORIG_RESOL);
stitcher->setPanoConfidenceThresh(1);
stitcher->setWaveCorrection(true);
stitcher->setWaveCorrectKind(detail::WAVE_CORRECT_HORIZ);
stitcher->setFeaturesMatcher(makePtr<detail::BestOf2NearestMatcher>(try_use_gpu));
stitcher->setBundleAdjuster(makePtr<detail::BundleAdjusterRay>());

#ifdef HAVE_OPENCV_CUDALEGACY
if (try_use_gpu && cuda::getCudaEnabledDeviceCount() > 0)
{
#ifdef HAVE_OPENCV_NONFREE
stitcher->setFeaturesFinder(makePtr<detail::SurfFeaturesFinderGpu>());
#else
stitcher->setFeaturesFinder(makePtr<detail::OrbFeaturesFinder>());
#endif
stitcher->setWarper(makePtr<SphericalWarperGpu>());
stitcher->setSeamFinder(makePtr<detail::GraphCutSeamFinderGpu>());
}
else
#endif
{
#ifdef HAVE_OPENCV_NONFREE
stitcher->setFeaturesFinder(makePtr<detail::SurfFeaturesFinder>());
#else
stitcher->setFeaturesFinder(makePtr<detail::OrbFeaturesFinder>());
#endif
stitcher->setWarper(makePtr<SphericalWarper>());
stitcher->setSeamFinder(makePtr<detail::GraphCutSeamFinder>(detail::GraphCutSeamFinderBase::COST_COLOR));
}
return Stitcher::create(Stitcher::PANORAMA, try_use_gpu);
}

stitcher->setExposureCompensator(makePtr<detail::BlocksGainCompensator>());
stitcher->setBlender(makePtr<detail::MultiBandBlender>(try_use_gpu));
Ptr<Stitcher> createStitcherScans(bool try_use_gpu)
{
CV_INSTRUMENT_REGION()

return stitcher;
return Stitcher::create(Stitcher::SCANS, try_use_gpu);
}
} // namespace cv

0 comments on commit df43429

Please sign in to comment.