hough.rst 11.5 KB

Hough Transform

gpu::HoughLinesDetector

Base class for lines detector algorithm.

class CV_EXPORTS HoughLinesDetector : public Algorithm
{
public:
    virtual void detect(InputArray src, OutputArray lines) = 0;
    virtual void downloadResults(InputArray d_lines, OutputArray h_lines, OutputArray h_votes = noArray()) = 0;

    virtual void setRho(float rho) = 0;
    virtual float getRho() const = 0;

    virtual void setTheta(float theta) = 0;
    virtual float getTheta() const = 0;

    virtual void setThreshold(int threshold) = 0;
    virtual int getThreshold() const = 0;

    virtual void setDoSort(bool doSort) = 0;
    virtual bool getDoSort() const = 0;

    virtual void setMaxLines(int maxLines) = 0;
    virtual int getMaxLines() const = 0;
};

gpu::HoughLinesDetector::detect

Finds lines in a binary image using the classical Hough transform.

gpu::HoughLinesDetector::downloadResults

Downloads results from :ocv:func:`gpu::HoughLinesDetector::detect` to host memory.

gpu::createHoughLinesDetector

Creates implementation for :ocv:class:`gpu::HoughLinesDetector` .

gpu::HoughSegmentDetector

Base class for line segments detector algorithm.

class CV_EXPORTS HoughSegmentDetector : public Algorithm
{
public:
    virtual void detect(InputArray src, OutputArray lines) = 0;

    virtual void setRho(float rho) = 0;
    virtual float getRho() const = 0;

    virtual void setTheta(float theta) = 0;
    virtual float getTheta() const = 0;

    virtual void setMinLineLength(int minLineLength) = 0;
    virtual int getMinLineLength() const = 0;

    virtual void setMaxLineGap(int maxLineGap) = 0;
    virtual int getMaxLineGap() const = 0;

    virtual void setMaxLines(int maxLines) = 0;
    virtual int getMaxLines() const = 0;
};

gpu::HoughSegmentDetector::detect

Finds line segments in a binary image using the probabilistic Hough transform.

gpu::createHoughSegmentDetector

Creates implementation for :ocv:class:`gpu::HoughSegmentDetector` .

gpu::HoughCirclesDetector

Base class for circles detector algorithm.

class CV_EXPORTS HoughCirclesDetector : public Algorithm
{
public:
    virtual void detect(InputArray src, OutputArray circles) = 0;

    virtual void setDp(float dp) = 0;
    virtual float getDp() const = 0;

    virtual void setMinDist(float minDist) = 0;
    virtual float getMinDist() const = 0;

    virtual void setCannyThreshold(int cannyThreshold) = 0;
    virtual int getCannyThreshold() const = 0;

    virtual void setVotesThreshold(int votesThreshold) = 0;
    virtual int getVotesThreshold() const = 0;

    virtual void setMinRadius(int minRadius) = 0;
    virtual int getMinRadius() const = 0;

    virtual void setMaxRadius(int maxRadius) = 0;
    virtual int getMaxRadius() const = 0;

    virtual void setMaxCircles(int maxCircles) = 0;
    virtual int getMaxCircles() const = 0;
};

gpu::HoughCirclesDetector::detect

Finds circles in a grayscale image using the Hough transform.

gpu::createHoughCirclesDetector

Creates implementation for :ocv:class:`gpu::HoughCirclesDetector` .

gpu::GeneralizedHough

Base class for generalized hough transform.

class CV_EXPORTS GeneralizedHough : public Algorithm
{
public:
    static Ptr<GeneralizedHough> create(int method);

    virtual void setTemplate(InputArray templ, int cannyThreshold = 100, Point templCenter = Point(-1, -1)) = 0;
    virtual void setTemplate(InputArray edges, InputArray dx, InputArray dy, Point templCenter = Point(-1, -1)) = 0;

    virtual void detect(InputArray image, OutputArray positions, int cannyThreshold = 100) = 0;
    virtual void detect(InputArray edges, InputArray dx, InputArray dy, OutputArray positions) = 0;

    virtual void downloadResults(InputArray d_positions, OutputArray h_positions, OutputArray h_votes = noArray()) = 0;
};

Finds arbitrary template in the grayscale image using Generalized Hough Transform.

gpu::GeneralizedHough::create

Creates implementation for :ocv:class:`gpu::GeneralizedHough` .

For full affine transformations (move + scale + rotation) [Guil1999] algorithm is used, otherwise [Ballard1981] algorithm is used.

gpu::GeneralizedHough::setTemplate

Set template to search.

gpu::GeneralizedHough::detect

Finds template (set by :ocv:func:`gpu::GeneralizedHough::setTemplate` ) in the grayscale image.

gpu::GeneralizedHough::downloadResults

Downloads results from :ocv:func:`gpu::GeneralizedHough::detect` to host memory.

[Ballard1981] Ballard, D.H. (1981). Generalizing the Hough transform to detect arbitrary shapes. Pattern Recognition 13 (2): 111-122.
[Guil1999] Guil, N., González-Linares, J.M. and Zapata, E.L. (1999). Bidimensional shape detection using an invariant approach. Pattern Recognition 32 (6): 1025-1038.