UNPKG

@techstark/opencv-js

Version:

OpenCV JavaScript version for node.js or browser

731 lines (670 loc) 31.3 kB
import type { bool, Circle, double, float, InputArray, int, Moments, OutputArray, OutputArrayOfArrays, Point, Point2f, Rect, RotatedRect, } from "./_types"; /* * # Structural Analysis and Shape Descriptors * */ /** * The function [cv::approxPolyDP] approximates a curve or a polygon with another curve/polygon with * less vertices so that the distance between them is less or equal to the specified precision. It uses * the Douglas-Peucker algorithm * * @param curve Input vector of a 2D point stored in std::vector or Mat * * @param approxCurve Result of the approximation. The type should match the type of the input curve. * * @param epsilon Parameter specifying the approximation accuracy. This is the maximum distance between * the original curve and its approximation. * * @param closed If true, the approximated curve is closed (its first and last vertices are connected). * Otherwise, it is not closed. */ export declare function approxPolyDP( curve: InputArray, approxCurve: OutputArray, epsilon: double, closed: bool, ): void; /** * The function computes a curve length or a closed contour perimeter. * * @param curve Input vector of 2D points, stored in std::vector or Mat. * * @param closed Flag indicating whether the curve is closed or not. */ export declare function arcLength(curve: InputArray, closed: bool): double; /** * The function calculates and returns the minimal up-right bounding rectangle for the specified point * set or non-zero pixels of gray-scale image. * * @param array Input gray-scale image or 2D point set, stored in std::vector or Mat. */ export declare function boundingRect(array: InputArray): Rect; /** * The function finds the four vertices of a rotated rectangle. This function is useful to draw the * rectangle. In C++, instead of using this function, you can directly use [RotatedRect::points] * method. Please visit the [tutorial on Creating Bounding rotated boxes and ellipses for contours] for * more information. * * @param box The input rotated rectangle. It may be the output of * * @param points The output array of four vertices of rectangles. */ export declare function boxPoints(box: RotatedRect, points: OutputArray): void; /** * image with 4 or 8 way connectivity - returns N, the total number of labels [0, N-1] where 0 * represents the background label. ltype specifies the output label image type, an important * consideration based on the total number of labels or alternatively the total number of pixels in the * source image. ccltype specifies the connected components labeling algorithm to use, currently Grana * (BBDT) and Wu's (SAUF) algorithms are supported, see the [ConnectedComponentsAlgorithmsTypes] for * details. Note that SAUF algorithm forces a row major ordering of labels while BBDT does not. This * function uses parallel version of both Grana and Wu's algorithms if at least one allowed parallel * framework is enabled and if the rows of the image are at least twice the number returned by * [getNumberOfCPUs]. * * @param image the 8-bit single-channel image to be labeled * * @param labels destination labeled image * * @param connectivity 8 or 4 for 8-way or 4-way connectivity respectively * * @param ltype output image label type. Currently CV_32S and CV_16U are supported. * * @param ccltype connected components algorithm type (see the ConnectedComponentsAlgorithmsTypes). */ export declare function connectedComponents( image: InputArray, labels: OutputArray, connectivity: int, ltype: int, ccltype: int, ): int; /** * This is an overloaded member function, provided for convenience. It differs from the above function * only in what argument(s) it accepts. * * @param image the 8-bit single-channel image to be labeled * * @param labels destination labeled image * * @param connectivity 8 or 4 for 8-way or 4-way connectivity respectively * * @param ltype output image label type. Currently CV_32S and CV_16U are supported. */ export declare function connectedComponents( image: InputArray, labels: OutputArray, connectivity?: int, ltype?: int, ): int; /** * image with 4 or 8 way connectivity - returns N, the total number of labels [0, N-1] where 0 * represents the background label. ltype specifies the output label image type, an important * consideration based on the total number of labels or alternatively the total number of pixels in the * source image. ccltype specifies the connected components labeling algorithm to use, currently * Grana's (BBDT) and Wu's (SAUF) algorithms are supported, see the * [ConnectedComponentsAlgorithmsTypes] for details. Note that SAUF algorithm forces a row major * ordering of labels while BBDT does not. This function uses parallel version of both Grana and Wu's * algorithms (statistics included) if at least one allowed parallel framework is enabled and if the * rows of the image are at least twice the number returned by [getNumberOfCPUs]. * * @param image the 8-bit single-channel image to be labeled * * @param labels destination labeled image * * @param stats statistics output for each label, including the background label, see below for * available statistics. Statistics are accessed via stats(label, COLUMN) where COLUMN is one of * ConnectedComponentsTypes. The data type is CV_32S. * * @param centroids centroid output for each label, including the background label. Centroids are * accessed via centroids(label, 0) for x and centroids(label, 1) for y. The data type CV_64F. * * @param connectivity 8 or 4 for 8-way or 4-way connectivity respectively * * @param ltype output image label type. Currently CV_32S and CV_16U are supported. * * @param ccltype connected components algorithm type (see ConnectedComponentsAlgorithmsTypes). */ export declare function connectedComponentsWithStats( image: InputArray, labels: OutputArray, stats: OutputArray, centroids: OutputArray, connectivity: int, ltype: int, ccltype: int, ): int; /** * This is an overloaded member function, provided for convenience. It differs from the above function * only in what argument(s) it accepts. * * @param image the 8-bit single-channel image to be labeled * * @param labels destination labeled image * * @param stats statistics output for each label, including the background label, see below for * available statistics. Statistics are accessed via stats(label, COLUMN) where COLUMN is one of * ConnectedComponentsTypes. The data type is CV_32S. * * @param centroids centroid output for each label, including the background label. Centroids are * accessed via centroids(label, 0) for x and centroids(label, 1) for y. The data type CV_64F. * * @param connectivity 8 or 4 for 8-way or 4-way connectivity respectively * * @param ltype output image label type. Currently CV_32S and CV_16U are supported. */ export declare function connectedComponentsWithStats( image: InputArray, labels: OutputArray, stats: OutputArray, centroids: OutputArray, connectivity?: int, ltype?: int, ): int; /** * The function computes a contour area. Similarly to moments , the area is computed using the Green * formula. Thus, the returned area and the number of non-zero pixels, if you draw the contour using * [drawContours] or [fillPoly] , can be different. Also, the function will most certainly give a wrong * results for contours with self-intersections. * * Example: * * ```cpp * vector<Point> contour; * contour.push_back(Point2f(0, 0)); * contour.push_back(Point2f(10, 0)); * contour.push_back(Point2f(10, 10)); * contour.push_back(Point2f(5, 4)); * * double area0 = contourArea(contour); * vector<Point> approx; * approxPolyDP(contour, approx, 5, true); * double area1 = contourArea(approx); * * cout << "area0 =" << area0 << endl << * "area1 =" << area1 << endl << * "approx poly vertices" << approx.size() << endl; * ``` * * @param contour Input vector of 2D points (contour vertices), stored in std::vector or Mat. * * @param oriented Oriented area flag. If it is true, the function returns a signed area value, * depending on the contour orientation (clockwise or counter-clockwise). Using this feature you can * determine orientation of a contour by taking the sign of an area. By default, the parameter is * false, which means that the absolute value is returned. */ export declare function contourArea( contour: InputArray, oriented?: bool, ): double; /** * The function [cv::convexHull] finds the convex hull of a 2D point set using the Sklansky's algorithm * Sklansky82 that has *O(N logN)* complexity in the current implementation. * * `points` and `hull` should be different arrays, inplace processing isn't supported. * Check [the corresponding tutorial] for more details. * * useful links: * * @param points Input 2D point set, stored in std::vector or Mat. * * @param hull Output convex hull. It is either an integer vector of indices or vector of points. In * the first case, the hull elements are 0-based indices of the convex hull points in the original * array (since the set of convex hull points is a subset of the original point set). In the second * case, hull elements are the convex hull points themselves. * * @param clockwise Orientation flag. If it is true, the output convex hull is oriented clockwise. * Otherwise, it is oriented counter-clockwise. The assumed coordinate system has its X axis pointing * to the right, and its Y axis pointing upwards. * * @param returnPoints Operation flag. In case of a matrix, when the flag is true, the function returns * convex hull points. Otherwise, it returns indices of the convex hull points. When the output array * is std::vector, the flag is ignored, and the output depends on the type of the vector: * std::vector<int> implies returnPoints=false, std::vector<Point> implies returnPoints=true. */ export declare function convexHull( points: InputArray, hull: OutputArray, clockwise?: bool, returnPoints?: bool, ): void; /** * The figure below displays convexity defects of a hand contour: * * @param contour Input contour. * * @param convexhull Convex hull obtained using convexHull that should contain indices of the contour * points that make the hull. * * @param convexityDefects The output vector of convexity defects. In C++ and the new Python/Java * interface each convexity defect is represented as 4-element integer vector (a.k.a. Vec4i): * (start_index, end_index, farthest_pt_index, fixpt_depth), where indices are 0-based indices in the * original contour of the convexity defect beginning, end and the farthest point, and fixpt_depth is * fixed-point approximation (with 8 fractional bits) of the distance between the farthest contour * point and the hull. That is, to get the floating-point value of the depth will be fixpt_depth/256.0. */ export declare function convexityDefects( contour: InputArray, convexhull: InputArray, convexityDefects: OutputArray, ): void; export declare function createGeneralizedHoughBallard(): any; export declare function createGeneralizedHoughGuil(): any; /** * The function retrieves contours from the binary image using the algorithm Suzuki85 . The contours * are a useful tool for shape analysis and object detection and recognition. See squares.cpp in the * OpenCV sample directory. * * Since opencv 3.2 source image is not modified by this function. * * @param image Source, an 8-bit single-channel image. Non-zero pixels are treated as 1's. Zero pixels * remain 0's, so the image is treated as binary . You can use compare, inRange, threshold , * adaptiveThreshold, Canny, and others to create a binary image out of a grayscale or color one. If * mode equals to RETR_CCOMP or RETR_FLOODFILL, the input can also be a 32-bit integer image of labels * (CV_32SC1). * * @param contours Detected contours. Each contour is stored as a vector of points (e.g. * std::vector<std::vector<cv::Point> >). * * @param hierarchy Optional output vector (e.g. std::vector<cv::Vec4i>), containing information about * the image topology. It has as many elements as the number of contours. For each i-th contour * contours[i], the elements hierarchy[i][0] , hierarchy[i][1] , hierarchy[i][2] , and hierarchy[i][3] * are set to 0-based indices in contours of the next and previous contours at the same hierarchical * level, the first child contour and the parent contour, respectively. If for the contour i there are * no next, previous, parent, or nested contours, the corresponding elements of hierarchy[i] will be * negative. * * @param mode Contour retrieval mode, see RetrievalModes * * @param method Contour approximation method, see ContourApproximationModes * * @param offset Optional offset by which every contour point is shifted. This is useful if the * contours are extracted from the image ROI and then they should be analyzed in the whole image * context. */ export declare function findContours( image: InputArray, contours: OutputArrayOfArrays, hierarchy: OutputArray, mode: int, method: int, offset?: Point, ): void; /** * This is an overloaded member function, provided for convenience. It differs from the above function * only in what argument(s) it accepts. */ export declare function findContours( image: InputArray, contours: OutputArrayOfArrays, mode: int, method: int, offset?: Point, ): void; /** * The function calculates the ellipse that fits (in a least-squares sense) a set of 2D points best of * all. It returns the rotated rectangle in which the ellipse is inscribed. The first algorithm * described by Fitzgibbon95 is used. Developer should keep in mind that it is possible that the * returned ellipse/rotatedRect data contains negative indices, due to the data points being close to * the border of the containing [Mat] element. * * @param points Input 2D point set, stored in std::vector<> or Mat */ export declare function fitEllipse(points: InputArray): RotatedRect; /** * The function calculates the ellipse that fits a set of 2D points. It returns the rotated rectangle * in which the ellipse is inscribed. The Approximate Mean Square (AMS) proposed by Taubin1991 is used. * * For an ellipse, this basis set is `$ \\chi= \\left(x^2, x y, y^2, x, y, 1\\right) $`, which is a set * of six free coefficients `$ * A^T=\\left\\{A_{\\text{xx}},A_{\\text{xy}},A_{\\text{yy}},A_x,A_y,A_0\\right\\} $`. However, to * specify an ellipse, all that is needed is five numbers; the major and minor axes lengths `$ (a,b) * $`, the position `$ (x_0,y_0) $`, and the orientation `$ \\theta $`. This is because the basis set * includes lines, quadratics, parabolic and hyperbolic functions as well as elliptical functions as * possible fits. If the fit is found to be a parabolic or hyperbolic function then the standard * [fitEllipse] method is used. The AMS method restricts the fit to parabolic, hyperbolic and * elliptical curves by imposing the condition that `$ A^T ( D_x^T D_x + D_y^T D_y) A = 1 $` where the * matrices `$ Dx $` and `$ Dy $` are the partial derivatives of the design matrix `$ D $` with respect * to x and y. The matrices are formed row by row applying the following to each of the points in the * set: `\\begin{align*} D(i,:)&=\\left\\{x_i^2, x_i y_i, y_i^2, x_i, y_i, 1\\right\\} & * D_x(i,:)&=\\left\\{2 x_i,y_i,0,1,0,0\\right\\} & D_y(i,:)&=\\left\\{0,x_i,2 y_i,0,1,0\\right\\} * \\end{align*}` The AMS method minimizes the cost function `\\begin{equation*} \\epsilon ^2=\\frac{ * A^T D^T D A }{ A^T (D_x^T D_x + D_y^T D_y) A^T } \\end{equation*}` * * The minimum cost is found by solving the generalized eigenvalue problem. * * `\\begin{equation*} D^T D A = \\lambda \\left( D_x^T D_x + D_y^T D_y\\right) A \\end{equation*}` * * @param points Input 2D point set, stored in std::vector<> or Mat */ export declare function fitEllipseAMS(points: InputArray): RotatedRect; /** * The function calculates the ellipse that fits a set of 2D points. It returns the rotated rectangle * in which the ellipse is inscribed. The Direct least square (Direct) method by Fitzgibbon1999 is * used. * * For an ellipse, this basis set is `$ \\chi= \\left(x^2, x y, y^2, x, y, 1\\right) $`, which is a set * of six free coefficients `$ * A^T=\\left\\{A_{\\text{xx}},A_{\\text{xy}},A_{\\text{yy}},A_x,A_y,A_0\\right\\} $`. However, to * specify an ellipse, all that is needed is five numbers; the major and minor axes lengths `$ (a,b) * $`, the position `$ (x_0,y_0) $`, and the orientation `$ \\theta $`. This is because the basis set * includes lines, quadratics, parabolic and hyperbolic functions as well as elliptical functions as * possible fits. The Direct method confines the fit to ellipses by ensuring that `$ 4 A_{xx} A_{yy}- * A_{xy}^2 > 0 $`. The condition imposed is that `$ 4 A_{xx} A_{yy}- A_{xy}^2=1 $` which satisfies the * inequality and as the coefficients can be arbitrarily scaled is not overly restrictive. * * `\\begin{equation*} \\epsilon ^2= A^T D^T D A \\quad \\text{with} \\quad A^T C A =1 \\quad * \\text{and} \\quad C=\\left(\\begin{matrix} 0 & 0 & 2 & 0 & 0 & 0 \\\\ 0 & -1 & 0 & 0 & 0 & 0 \\\\ 2 * & 0 & 0 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 & 0 & 0 * \\end{matrix} \\right) \\end{equation*}` * * The minimum cost is found by solving the generalized eigenvalue problem. * * `\\begin{equation*} D^T D A = \\lambda \\left( C\\right) A \\end{equation*}` * * The system produces only one positive eigenvalue `$ \\lambda$` which is chosen as the solution with * its eigenvector `$\\mathbf{u}$`. These are used to find the coefficients * * `\\begin{equation*} A = \\sqrt{\\frac{1}{\\mathbf{u}^T C \\mathbf{u}}} \\mathbf{u} \\end{equation*}` * The scaling factor guarantees that `$A^T C A =1$`. * * @param points Input 2D point set, stored in std::vector<> or Mat */ export declare function fitEllipseDirect(points: InputArray): RotatedRect; /** * The function fitLine fits a line to a 2D or 3D point set by minimizing `$\\sum_i \\rho(r_i)$` where * `$r_i$` is a distance between the `$i^{th}$` point, the line and `$\\rho(r)$` is a distance * function, one of the following: * * DIST_L2 `\\[\\rho (r) = r^2/2 \\quad \\text{(the simplest and the fastest least-squares method)}\\]` * DIST_L1 `\\[\\rho (r) = r\\]` * DIST_L12 `\\[\\rho (r) = 2 \\cdot ( \\sqrt{1 + \\frac{r^2}{2}} - 1)\\]` * DIST_FAIR `\\[\\rho \\left (r \\right ) = C^2 \\cdot \\left ( \\frac{r}{C} - \\log{\\left(1 + * \\frac{r}{C}\\right)} \\right ) \\quad \\text{where} \\quad C=1.3998\\]` * DIST_WELSCH `\\[\\rho \\left (r \\right ) = \\frac{C^2}{2} \\cdot \\left ( 1 - * \\exp{\\left(-\\left(\\frac{r}{C}\\right)^2\\right)} \\right ) \\quad \\text{where} \\quad * C=2.9846\\]` * DIST_HUBER `\\[\\rho (r) = \\fork{r^2/2}{if \\(r < C\\)}{C \\cdot (r-C/2)}{otherwise} \\quad * \\text{where} \\quad C=1.345\\]` * * The algorithm is based on the M-estimator ( ) technique that iteratively fits the line using the * weighted least-squares algorithm. After each iteration the weights `$w_i$` are adjusted to be * inversely proportional to `$\\rho(r_i)$` . * * @param points Input vector of 2D or 3D points, stored in std::vector<> or Mat. * * @param line Output line parameters. In case of 2D fitting, it should be a vector of 4 elements (like * Vec4f) - (vx, vy, x0, y0), where (vx, vy) is a normalized vector collinear to the line and (x0, y0) * is a point on the line. In case of 3D fitting, it should be a vector of 6 elements (like Vec6f) - * (vx, vy, vz, x0, y0, z0), where (vx, vy, vz) is a normalized vector collinear to the line and (x0, * y0, z0) is a point on the line. * * @param distType Distance used by the M-estimator, see DistanceTypes * * @param param Numerical parameter ( C ) for some types of distances. If it is 0, an optimal value is * chosen. * * @param reps Sufficient accuracy for the radius (distance between the coordinate origin and the * line). * * @param aeps Sufficient accuracy for the angle. 0.01 would be a good default value for reps and aeps. */ export declare function fitLine( points: InputArray, line: OutputArray, distType: int, param: double, reps: double, aeps: double, ): void; /** * The function calculates seven Hu invariants (introduced in Hu62; see also ) defined as: * * `\\[\\begin{array}{l} hu[0]= \\eta _{20}+ \\eta _{02} \\\\ hu[1]=( \\eta _{20}- \\eta _{02})^{2}+4 * \\eta _{11}^{2} \\\\ hu[2]=( \\eta _{30}-3 \\eta _{12})^{2}+ (3 \\eta _{21}- \\eta _{03})^{2} \\\\ * hu[3]=( \\eta _{30}+ \\eta _{12})^{2}+ ( \\eta _{21}+ \\eta _{03})^{2} \\\\ hu[4]=( \\eta _{30}-3 * \\eta _{12})( \\eta _{30}+ \\eta _{12})[( \\eta _{30}+ \\eta _{12})^{2}-3( \\eta _{21}+ \\eta * _{03})^{2}]+(3 \\eta _{21}- \\eta _{03})( \\eta _{21}+ \\eta _{03})[3( \\eta _{30}+ \\eta * _{12})^{2}-( \\eta _{21}+ \\eta _{03})^{2}] \\\\ hu[5]=( \\eta _{20}- \\eta _{02})[( \\eta _{30}+ * \\eta _{12})^{2}- ( \\eta _{21}+ \\eta _{03})^{2}]+4 \\eta _{11}( \\eta _{30}+ \\eta _{12})( \\eta * _{21}+ \\eta _{03}) \\\\ hu[6]=(3 \\eta _{21}- \\eta _{03})( \\eta _{21}+ \\eta _{03})[3( \\eta * _{30}+ \\eta _{12})^{2}-( \\eta _{21}+ \\eta _{03})^{2}]-( \\eta _{30}-3 \\eta _{12})( \\eta _{21}+ * \\eta _{03})[3( \\eta _{30}+ \\eta _{12})^{2}-( \\eta _{21}+ \\eta _{03})^{2}] \\\\ \\end{array}\\]` * * where `$\\eta_{ji}$` stands for `$\\texttt{Moments::nu}_{ji}$` . * * These values are proved to be invariants to the image scale, rotation, and reflection except the * seventh one, whose sign is changed by reflection. This invariance is proved with the assumption of * infinite image resolution. In case of raster images, the computed Hu invariants for the original and * transformed images are a bit different. * * [matchShapes] * * @param moments Input moments computed with moments . * * @param hu Output Hu invariants. */ export declare function HuMoments(moments: any, hu: double): void; /** * This is an overloaded member function, provided for convenience. It differs from the above function * only in what argument(s) it accepts. */ export declare function HuMoments(m: any, hu: OutputArray): void; export declare function intersectConvexConvex( _p1: InputArray, _p2: InputArray, _p12: OutputArray, handleNested?: bool, ): float; /** * The function tests whether the input contour is convex or not. The contour must be simple, that is, * without self-intersections. Otherwise, the function output is undefined. * * @param contour Input vector of 2D points, stored in std::vector<> or Mat */ export declare function isContourConvex(contour: InputArray): bool; /** * The function compares two shapes. All three implemented methods use the Hu invariants (see * [HuMoments]) * * @param contour1 First contour or grayscale image. * * @param contour2 Second contour or grayscale image. * * @param method Comparison method, see ShapeMatchModes * * @param parameter Method-specific parameter (not supported now). */ export declare function matchShapes( contour1: InputArray, contour2: InputArray, method: int, parameter: double, ): double; /** * The function calculates and returns the minimum-area bounding rectangle (possibly rotated) for a * specified point set. Developer should keep in mind that the returned [RotatedRect] can contain * negative indices when data is close to the containing [Mat] element boundary. * * @param points Input vector of 2D points, stored in std::vector<> or Mat */ export declare function minAreaRect(points: InputArray): RotatedRect; /** * The function finds the minimal enclosing circle of a 2D point set using an iterative algorithm. * * @param points Input vector of 2D points, stored in std::vector<> or Mat */ export declare function minEnclosingCircle( points: InputArray, ): Circle; /** * The function finds a triangle of minimum area enclosing the given set of 2D points and returns its * area. The output for a given 2D point set is shown in the image below. 2D points are depicted in * red* and the enclosing triangle in *yellow*. * * The implementation of the algorithm is based on O'Rourke's ORourke86 and Klee and Laskowski's * KleeLaskowski85 papers. O'Rourke provides a `$\\theta(n)$` algorithm for finding the minimal * enclosing triangle of a 2D convex polygon with n vertices. Since the [minEnclosingTriangle] function * takes a 2D point set as input an additional preprocessing step of computing the convex hull of the * 2D point set is required. The complexity of the [convexHull] function is `$O(n log(n))$` which is * higher than `$\\theta(n)$`. Thus the overall complexity of the function is `$O(n log(n))$`. * * @param points Input vector of 2D points with depth CV_32S or CV_32F, stored in std::vector<> or Mat * * @param triangle Output vector of three 2D points defining the vertices of the triangle. The depth of * the OutputArray must be CV_32F. */ export declare function minEnclosingTriangle( points: InputArray, triangle: OutputArray, ): double; /** * The function computes moments, up to the 3rd order, of a vector shape or a rasterized shape. The * results are returned in the structure [cv::Moments]. * * moments. * * Only applicable to contour moments calculations from Python bindings: Note that the numpy type for * the input array should be either np.int32 or np.float32. * * [contourArea], [arcLength] * * @param array Raster image (single-channel, 8-bit or floating-point 2D array) or an array ( $1 \times * N$ or $N \times 1$ ) of 2D points (Point or Point2f ). * * @param binaryImage If it is true, all non-zero image pixels are treated as 1's. The parameter is * used for images only. */ export declare function moments(array: InputArray, binaryImage?: bool): Moments; /** * The function determines whether the point is inside a contour, outside, or lies on an edge (or * coincides with a vertex). It returns positive (inside), negative (outside), or zero (on an edge) * value, correspondingly. When measureDist=false , the return value is +1, -1, and 0, respectively. * Otherwise, the return value is a signed distance between the point and the nearest contour edge. * * See below a sample output of the function where each image pixel is tested against the contour: * * @param contour Input contour. * * @param pt Point tested against the contour. * * @param measureDist If true, the function estimates the signed distance from the point to the nearest * contour edge. Otherwise, the function only checks if the point is inside a contour or not. */ export declare function pointPolygonTest( contour: InputArray, pt: Point2f, measureDist: bool, ): double; /** * If there is then the vertices of the intersecting region are returned as well. * * Below are some examples of intersection configurations. The hatched pattern indicates the * intersecting region and the red vertices are returned by the function. * * One of [RectanglesIntersectTypes] * * @param rect1 First rectangle * * @param rect2 Second rectangle * * @param intersectingRegion The output array of the vertices of the intersecting region. It returns at * most 8 vertices. Stored as std::vector<cv::Point2f> or cv::Mat as Mx1 of type CV_32FC2. */ export declare function rotatedRectangleIntersection( rect1: any, rect2: any, intersectingRegion: OutputArray, ): int; export declare const CCL_WU: ConnectedComponentsAlgorithmsTypes; // initializer: = 0 export declare const CCL_DEFAULT: ConnectedComponentsAlgorithmsTypes; // initializer: = -1 export declare const CCL_GRANA: ConnectedComponentsAlgorithmsTypes; // initializer: = 1 /** * The leftmost (x) coordinate which is the inclusive start of the bounding box in the horizontal * direction. * */ export declare const CC_STAT_LEFT: ConnectedComponentsTypes; // initializer: = 0 /** * The topmost (y) coordinate which is the inclusive start of the bounding box in the vertical * direction. * */ export declare const CC_STAT_TOP: ConnectedComponentsTypes; // initializer: = 1 export declare const CC_STAT_WIDTH: ConnectedComponentsTypes; // initializer: = 2 export declare const CC_STAT_HEIGHT: ConnectedComponentsTypes; // initializer: = 3 export declare const CC_STAT_AREA: ConnectedComponentsTypes; // initializer: = 4 export declare const CC_STAT_MAX: ConnectedComponentsTypes; // initializer: = 5 /** * stores absolutely all the contour points. That is, any 2 subsequent points (x1,y1) and (x2,y2) of * the contour will be either horizontal, vertical or diagonal neighbors, that is, * max(abs(x1-x2),abs(y2-y1))==1. * */ export declare const CHAIN_APPROX_NONE: ContourApproximationModes; // initializer: = 1 /** * compresses horizontal, vertical, and diagonal segments and leaves only their end points. For * example, an up-right rectangular contour is encoded with 4 points. * */ export declare const CHAIN_APPROX_SIMPLE: ContourApproximationModes; // initializer: = 2 /** * applies one of the flavors of the Teh-Chin chain approximation algorithm TehChin89 * */ export declare const CHAIN_APPROX_TC89_L1: ContourApproximationModes; // initializer: = 3 /** * applies one of the flavors of the Teh-Chin chain approximation algorithm TehChin89 * */ export declare const CHAIN_APPROX_TC89_KCOS: ContourApproximationModes; // initializer: = 4 export declare const INTERSECT_NONE: RectanglesIntersectTypes; // initializer: = 0 export declare const INTERSECT_PARTIAL: RectanglesIntersectTypes; // initializer: = 1 export declare const INTERSECT_FULL: RectanglesIntersectTypes; // initializer: = 2 /** * retrieves only the extreme outer contours. It sets `hierarchy[i][2]=hierarchy[i][3]=-1` for all the * contours. * */ export declare const RETR_EXTERNAL: RetrievalModes; // initializer: = 0 /** * retrieves all of the contours without establishing any hierarchical relationships. * */ export declare const RETR_LIST: RetrievalModes; // initializer: = 1 /** * retrieves all of the contours and organizes them into a two-level hierarchy. At the top level, there * are external boundaries of the components. At the second level, there are boundaries of the holes. * If there is another contour inside a hole of a connected component, it is still put at the top * level. * */ export declare const RETR_CCOMP: RetrievalModes; // initializer: = 2 /** * retrieves all of the contours and reconstructs a full hierarchy of nested contours. * */ export declare const RETR_TREE: RetrievalModes; // initializer: = 3 export declare const RETR_FLOODFILL: RetrievalModes; // initializer: = 4 export declare const CONTOURS_MATCH_I1: ShapeMatchModes; // initializer: =1 export declare const CONTOURS_MATCH_I2: ShapeMatchModes; // initializer: =2 export declare const CONTOURS_MATCH_I3: ShapeMatchModes; // initializer: =3 export type ConnectedComponentsAlgorithmsTypes = any; export type ConnectedComponentsTypes = any; export type ContourApproximationModes = any; export type RectanglesIntersectTypes = any; export type RetrievalModes = any; export type ShapeMatchModes = any;