| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- // This file is part of OpenCV project.
- // It is subject to the license terms in the LICENSE file found in the top-level directory
- // of this distribution and at http://opencv.org/license.html.
- #ifndef __OPENCV_EDGE_DRAWING_HPP__
- #define __OPENCV_EDGE_DRAWING_HPP__
- #include <opencv2/core.hpp>
- namespace cv
- {
- namespace ximgproc
- {
- //! @addtogroup ximgproc_edge_drawing
- //! @{
- /** @brief Class implementing the ED (EdgeDrawing) @cite topal2012edge, EDLines @cite akinlar2011edlines, EDPF @cite akinlar2012edpf and EDCircles @cite akinlar2013edcircles algorithms
- */
- class CV_EXPORTS_W EdgeDrawing : public Algorithm
- {
- public:
- enum GradientOperator
- {
- PREWITT = 0,
- SOBEL = 1,
- SCHARR = 2,
- LSD = 3
- };
- struct CV_EXPORTS_W_SIMPLE Params
- {
- CV_WRAP Params();
- //! Parameter Free mode will be activated when this value is set as true. Default value is false.
- CV_PROP_RW bool PFmode;
- /** @brief indicates the operator used for gradient calculation.
- one of the flags cv::ximgproc::EdgeDrawing::GradientOperator. Default value is PREWITT
- */
- CV_PROP_RW int EdgeDetectionOperator;
- //! threshold value of gradiential difference between pixels. Used to create gradient image. Default value is 20
- CV_PROP_RW int GradientThresholdValue;
- //! threshold value used to select anchor points. Default value is 0
- CV_PROP_RW int AnchorThresholdValue;
- //! Default value is 1
- CV_PROP_RW int ScanInterval;
- /** @brief minimun connected pixels length processed to create an edge segment.
- in gradient image, minimum connected pixels length processed to create an edge segment. pixels having upper value than GradientThresholdValue
- will be processed. Default value is 10
- */
- CV_PROP_RW int MinPathLength;
- //! sigma value for internal GaussianBlur() function. Default value is 1.0
- CV_PROP_RW float Sigma;
- CV_PROP_RW bool SumFlag;
- //! Default value is true. indicates if NFA (Number of False Alarms) algorithm will be used for line and ellipse validation.
- CV_PROP_RW bool NFAValidation;
- //! minimun line length to detect.
- CV_PROP_RW int MinLineLength;
- //! Default value is 6.0
- CV_PROP_RW double MaxDistanceBetweenTwoLines;
- //! Default value is 1.0
- CV_PROP_RW double LineFitErrorThreshold;
- //! Default value is 1.3
- CV_PROP_RW double MaxErrorThreshold;
- void read(const FileNode& fn);
- void write(FileStorage& fs) const;
- };
- /** @brief Detects edges in a grayscale image and prepares them to detect lines and ellipses.
- @param src 8-bit, single-channel, grayscale input image.
- */
- CV_WRAP virtual void detectEdges(InputArray src) = 0;
- /** @brief returns Edge Image prepared by detectEdges() function.
- @param dst returns 8-bit, single-channel output image.
- */
- CV_WRAP virtual void getEdgeImage(OutputArray dst) = 0;
- /** @brief returns Gradient Image prepared by detectEdges() function.
- @param dst returns 16-bit, single-channel output image.
- */
- CV_WRAP virtual void getGradientImage(OutputArray dst) = 0;
- /** @brief Returns std::vector<std::vector<Point>> of detected edge segments, see detectEdges()
- */
- CV_WRAP virtual std::vector<std::vector<Point> > getSegments() = 0;
- /** @brief Detects lines.
- @param lines output Vec<4f> contains the start point and the end point of detected lines.
- @note you should call detectEdges() before calling this function.
- */
- CV_WRAP virtual void detectLines(OutputArray lines) = 0;
- /** @brief Detects circles and ellipses.
- @param ellipses output Vec<6d> contains center point and perimeter for circles, center point, axes and angle for ellipses.
- @note you should call detectEdges() before calling this function.
- */
- CV_WRAP virtual void detectEllipses(OutputArray ellipses) = 0;
- CV_WRAP Params params;
- /** @brief sets parameters.
- this function is meant to be used for parameter setting in other languages than c++ like python.
- @param parameters
- */
- CV_WRAP void setParams(const EdgeDrawing::Params& parameters);
- virtual ~EdgeDrawing() { }
- };
- /** @brief Creates a smart pointer to a EdgeDrawing object and initializes it
- */
- CV_EXPORTS_W Ptr<EdgeDrawing> createEdgeDrawing();
- //! @}
- }
- }
- #endif /* __OPENCV_EDGE_DRAWING_HPP__ */
|