Open Source Computer Vision Library https://opencv.org/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

136 lines
3.7 KiB

Seam Estimation
===============
.. highlight:: cpp
detail::SeamFinder
------------------
.. ocv:class:: detail::SeamFinder
Base class for a seam estimator. ::
class CV_EXPORTS SeamFinder
{
public:
virtual ~SeamFinder() {}
virtual void find(const std::vector<Mat> &src, const std::vector<Point> &corners,
std::vector<Mat> &masks) = 0;
};
detail::SeamFinder::find
------------------------
Estimates seams.
.. ocv:function:: void detail::SeamFinder::find(const std::vector<UMat> &src, const std::vector<Point> &corners, std::vector<UMat> &masks)
:param src: Source images
:param corners: Source image top-left corners
:param masks: Source image masks to update
detail::NoSeamFinder
--------------------
.. ocv:class:: detail::NoSeamFinder : public detail::SeamFinder
Stub seam estimator which does nothing. ::
class CV_EXPORTS NoSeamFinder : public SeamFinder
{
public:
void find(const std::vector<Mat>&, const std::vector<Point>&, std::vector<Mat>&) {}
};
.. seealso:: :ocv:class:`detail::SeamFinder`
detail::PairwiseSeamFinder
--------------------------
.. ocv:class:: detail::PairwiseSeamFinder : public detail::SeamFinder
Base class for all pairwise seam estimators. ::
class CV_EXPORTS PairwiseSeamFinder : public SeamFinder
{
public:
virtual void find(const std::vector<Mat> &src, const std::vector<Point> &corners,
std::vector<Mat> &masks);
protected:
void run();
virtual void findInPair(size_t first, size_t second, Rect roi) = 0;
std::vector<Mat> images_;
std::vector<Size> sizes_;
std::vector<Point> corners_;
std::vector<Mat> masks_;
};
.. seealso:: :ocv:class:`detail::SeamFinder`
detail::PairwiseSeamFinder::findInPair
--------------------------------------
Resolves masks intersection of two specified images in the given ROI.
.. ocv:function:: void detail::PairwiseSeamFinder::findInPair(size_t first, size_t second, Rect roi)
:param first: First image index
:param second: Second image index
:param roi: Region of interest
detail::VoronoiSeamFinder
-------------------------
.. ocv:class:: detail::VoronoiSeamFinder : public detail::PairwiseSeamFinder
Voronoi diagram-based seam estimator. ::
class CV_EXPORTS VoronoiSeamFinder : public PairwiseSeamFinder
{
public:
virtual void find(const std::vector<Size> &size, const std::vector<Point> &corners,
std::vector<Mat> &masks);
private:
void findInPair(size_t first, size_t second, Rect roi);
};
.. seealso:: :ocv:class:`detail::PairwiseSeamFinder`
detail::GraphCutSeamFinderBase
------------------------------
.. ocv:class:: detail::GraphCutSeamFinderBase
Base class for all minimum graph-cut-based seam estimators. ::
class CV_EXPORTS GraphCutSeamFinderBase
{
public:
enum { COST_COLOR, COST_COLOR_GRAD };
};
detail::GraphCutSeamFinder
--------------------------
.. ocv:class:: detail::GraphCutSeamFinder : public detail::GraphCutSeamFinderBase, public detail::SeamFinder
Minimum graph cut-based seam estimator. See details in [V03]_. ::
class CV_EXPORTS GraphCutSeamFinder : public GraphCutSeamFinderBase, public SeamFinder
{
public:
GraphCutSeamFinder(int cost_type = COST_COLOR_GRAD, float terminal_cost = 10000.f,
float bad_region_penalty = 1000.f);
void find(const std::vector<Mat> &src, const std::vector<Point> &corners,
std::vector<Mat> &masks);
private:
/* hidden */
};
.. seealso::
:ocv:class:`detail::GraphCutSeamFinderBase`,
:ocv:class:`detail::SeamFinder`