From cc9a1bb62f2caa6498d730101846c2155f4ec077 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Thu, 30 Jun 2011 12:06:26 +0000 Subject: [PATCH] propagated some more fixes from 2.3 branch to the trunk --- doc/python_fragments/calchist.py | 53 ----- .../findstereocorrespondence.py | 23 -- doc/python_fragments/precornerdetect.py | 14 -- ...mera_calibration_and_3d_reconstruction.rst | 86 ++++--- modules/core/doc/basic_structures.rst | 215 +++++++++--------- modules/core/doc/drawing_functions.rst | 4 +- modules/core/doc/intro.rst | 4 +- modules/core/doc/operations_on_arrays.rst | 10 +- modules/core/src/arithm.cpp | 14 +- modules/core/src/copy.cpp | 7 +- modules/core/test/test_arithm.cpp | 7 + modules/ffmpeg/ffopencv.cpp | 2 +- ...mera_calibration_and_3d_reconstruction.rst | 2 +- modules/gpu/doc/image_filtering.rst | 53 +++-- modules/gpu/doc/image_processing.rst | 102 ++++----- modules/imgproc/doc/feature_detection.rst | 32 +-- modules/imgproc/doc/filtering.rst | 180 +++++++++------ .../imgproc/doc/geometric_transformations.rst | 137 +++++------ modules/imgproc/doc/histograms.rst | 29 ++- .../doc/miscellaneous_transformations.rst | 34 ++- modules/imgproc/doc/planar_subdivisions.rst | 11 +- ...uctural_analysis_and_shape_descriptors.rst | 22 +- modules/ml/doc/decision_trees.rst | 16 +- modules/ml/doc/expectation_maximization.rst | 4 +- modules/ml/doc/gradient_boosted_trees.rst | 14 +- modules/ml/doc/neural_networks.rst | 2 +- modules/ml/doc/random_trees.rst | 20 +- modules/python/test/test.py | 10 +- .../motion_analysis_and_object_tracking.rst | 30 ++- samples/cpp/building.jpg | Bin 0 -> 79718 bytes samples/cpp/tsukuba_l.png | Bin 0 -> 85192 bytes samples/cpp/tsukuba_r.png | Bin 0 -> 85104 bytes 32 files changed, 563 insertions(+), 574 deletions(-) delete mode 100644 doc/python_fragments/calchist.py delete mode 100644 doc/python_fragments/findstereocorrespondence.py delete mode 100644 doc/python_fragments/precornerdetect.py create mode 100644 samples/cpp/building.jpg create mode 100644 samples/cpp/tsukuba_l.png create mode 100644 samples/cpp/tsukuba_r.png diff --git a/doc/python_fragments/calchist.py b/doc/python_fragments/calchist.py deleted file mode 100644 index f379dfec1a..0000000000 --- a/doc/python_fragments/calchist.py +++ /dev/null @@ -1,53 +0,0 @@ -# Calculating and displaying 2D Hue-Saturation histogram of a color image - -import sys -import cv - -def hs_histogram(src): - # Convert to HSV - hsv = cv.CreateImage(cv.GetSize(src), 8, 3) - cv.CvtColor(src, hsv, cv.CV_BGR2HSV) - - # Extract the H and S planes - h_plane = cv.CreateMat(src.rows, src.cols, cv.CV_8UC1) - s_plane = cv.CreateMat(src.rows, src.cols, cv.CV_8UC1) - cv.Split(hsv, h_plane, s_plane, None, None) - planes = [h_plane, s_plane] - - h_bins = 30 - s_bins = 32 - hist_size = [h_bins, s_bins] - # hue varies from 0 (~0 deg red) to 180 (~360 deg red again */ - h_ranges = [0, 180] - # saturation varies from 0 (black-gray-white) to - # 255 (pure spectrum color) - s_ranges = [0, 255] - ranges = [h_ranges, s_ranges] - scale = 10 - hist = cv.CreateHist([h_bins, s_bins], cv.CV_HIST_ARRAY, ranges, 1) - cv.CalcHist([cv.GetImage(i) for i in planes], hist) - (_, max_value, _, _) = cv.GetMinMaxHistValue(hist) - - hist_img = cv.CreateImage((h_bins*scale, s_bins*scale), 8, 3) - - for h in range(h_bins): - for s in range(s_bins): - bin_val = cv.QueryHistValue_2D(hist, h, s) - intensity = cv.Round(bin_val * 255 / max_value) - cv.Rectangle(hist_img, - (h*scale, s*scale), - ((h+1)*scale - 1, (s+1)*scale - 1), - cv.RGB(intensity, intensity, intensity), - cv.CV_FILLED) - return hist_img - -if __name__ == '__main__': - src = cv.LoadImageM(sys.argv[1]) - cv.NamedWindow("Source", 1) - cv.ShowImage("Source", src) - - cv.NamedWindow("H-S Histogram", 1) - cv.ShowImage("H-S Histogram", hs_histogram(src)) - - cv.WaitKey(0) - diff --git a/doc/python_fragments/findstereocorrespondence.py b/doc/python_fragments/findstereocorrespondence.py deleted file mode 100644 index fd3e57f5fc..0000000000 --- a/doc/python_fragments/findstereocorrespondence.py +++ /dev/null @@ -1,23 +0,0 @@ -import sys -import cv - -def findstereocorrespondence(image_left, image_right): - # image_left and image_right are the input 8-bit single-channel images - # from the left and the right cameras, respectively - (r, c) = (image_left.rows, image_left.cols) - disparity_left = cv.CreateMat(r, c, cv.CV_16S) - disparity_right = cv.CreateMat(r, c, cv.CV_16S) - state = cv.CreateStereoGCState(16, 2) - cv.FindStereoCorrespondenceGC(image_left, image_right, disparity_left, disparity_right, state, 0) - return (disparity_left, disparity_right) - - -if __name__ == '__main__': - - (l, r) = [cv.LoadImageM(f, cv.CV_LOAD_IMAGE_GRAYSCALE) for f in sys.argv[1:]] - - (disparity_left, disparity_right) = findstereocorrespondence(l, r) - - disparity_left_visual = cv.CreateMat(l.rows, l.cols, cv.CV_8U) - cv.ConvertScale(disparity_left, disparity_left_visual, -16) - cv.SaveImage("disparity.pgm", disparity_left_visual) diff --git a/doc/python_fragments/precornerdetect.py b/doc/python_fragments/precornerdetect.py deleted file mode 100644 index 4f4da06b17..0000000000 --- a/doc/python_fragments/precornerdetect.py +++ /dev/null @@ -1,14 +0,0 @@ -import cv - -def precornerdetect(image): - # assume that the image is floating-point - corners = cv.CloneMat(image) - cv.PreCornerDetect(image, corners, 3) - - dilated_corners = cv.CloneMat(image) - cv.Dilate(corners, dilated_corners, None, 1) - - corner_mask = cv.CreateMat(image.rows, image.cols, cv.CV_8UC1) - cv.Sub(corners, dilated_corners, corners) - cv.CmpS(corners, 0, corner_mask, cv.CV_CMP_GE) - return (corners, corner_mask) diff --git a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst index 13adc9021d..68523cec89 100644 --- a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst +++ b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst @@ -29,11 +29,12 @@ or where: -* :math:`(X, Y, Z)` are the coordinates of a 3D point in the world coordinate space -* :math:`(u, v)` are the coordinates of the projection point in pixels -* :math:`A` is a camera matrix, or a matrix of intrinsic parameters -* :math:`(cx, cy)` is a principal point that is usually at the image center -* :math:`fx, fy` are the focal lengths expressed in pixel-related units + * :math:`(X, Y, Z)` are the coordinates of a 3D point in the world coordinate space + * :math:`(u, v)` are the coordinates of the projection point in pixels + * :math:`A` is a camera matrix, or a matrix of intrinsic parameters + * :math:`(cx, cy)` is a principal point that is usually at the image center + * :math:`fx, fy` are the focal lengths expressed in pixel-related units + Thus, if an image from the camera is scaled by a factor, all of these parameters should @@ -140,7 +141,7 @@ Finds the camera intrinsic and extrinsic parameters from several views of a cali :param flags: Different flags that may be zero or a combination of the following values: - * **CV_CALIB_USE_INTRINSIC_GUESS** ``cameraMatrix`` contains valid initial values of ``fx, fy, cx, cy`` that are optimized further. Otherwise, ``(cx, cy)`` is initially set to the image center ( ``imageSize`` is used), and focal distances are computed in a least-squares fashion. Note, that if intrinsic parameters are known, there is no need to use this function just to estimate extrinsic parameters. Use :ref:`solvePnP` instead. + * **CV_CALIB_USE_INTRINSIC_GUESS** ``cameraMatrix`` contains valid initial values of ``fx, fy, cx, cy`` that are optimized further. Otherwise, ``(cx, cy)`` is initially set to the image center ( ``imageSize`` is used), and focal distances are computed in a least-squares fashion. Note, that if intrinsic parameters are known, there is no need to use this function just to estimate extrinsic parameters. Use :ocv:func:`solvePnP` instead. * **CV_CALIB_FIX_PRINCIPAL_POINT** The principal point is not changed during the global optimization. It stays at the center or at a different location specified when ``CV_CALIB_USE_INTRINSIC_GUESS`` is set too. @@ -159,7 +160,7 @@ object with a known geometry and easily detectable feature points. Such an object is called a calibration rig or calibration pattern, and OpenCV has built-in support for a chessboard as a calibration rig (see -:ref:`findChessboardCorners` ). Currently, initialization +:ocv:func:`findChessboardCorners` ). Currently, initialization of intrinsic parameters (when ``CV_CALIB_USE_INTRINSIC_GUESS`` is not set) is only implemented for planar calibration patterns (where Z-coordinates of the object points must be all zeros). 3D calibration rigs can also be used as long as initial ``cameraMatrix`` is provided. @@ -173,7 +174,7 @@ The algorithm performs the following steps: Estimate the initial camera pose as if the intrinsic parameters have been already known. This is done using :ocv:func:`solvePnP` . #. - Run the global Levenberg-Marquardt optimization algorithm to minimize the reprojection error, that is, the total sum of squared distances between the observed feature points ``imagePoints`` and the projected (using the current estimates for camera parameters and the poses) object points ``objectPoints``. See :ref:`projectPoints` for details. + Run the global Levenberg-Marquardt optimization algorithm to minimize the reprojection error, that is, the total sum of squared distances between the observed feature points ``imagePoints`` and the projected (using the current estimates for camera parameters and the poses) object points ``objectPoints``. See :ocv:func:`projectPoints` for details. The function returns the final re-projection error. @@ -182,11 +183,12 @@ The function returns the final re-projection error. If you use a non-square (=non-NxN) grid and :ocv:func:`findChessboardCorners` for calibration, and ``calibrateCamera`` returns bad values (zero distortion coefficients, an image center very far from ``(w/2-0.5,h/2-0.5)``, and/or large differences between :math:`f_x` and :math:`f_y` (ratios of 10:1 or more)), then you have probably used ``patternSize=cvSize(rows,cols)`` instead of using ``patternSize=cvSize(cols,rows)`` in :ocv:func:`findChessboardCorners` . .. seealso:: -:ocv:func:`FindChessboardCorners`, -:ocv:func:`solvePnP`, -:ocv:func:`initCameraMatrix2D`, -:ocv:func:`stereoCalibrate`, -:ocv:func:`undistort` + + :ocv:func:`FindChessboardCorners`, + :ocv:func:`solvePnP`, + :ocv:func:`initCameraMatrix2D`, + :ocv:func:`stereoCalibrate`, + :ocv:func:`undistort` @@ -198,7 +200,7 @@ Computes useful camera characteristics from the camera matrix. .. ocv:pyfunction:: cv2.calibrationMatrixValues(cameraMatrix, imageSize, apertureWidth, apertureHeight) -> fovx, fovy, focalLength, principalPoint, aspectRatio - :param cameraMatrix: Input camera matrix that can be estimated by :ref:`calibrateCamera` or :ref:`stereoCalibrate` . + :param cameraMatrix: Input camera matrix that can be estimated by :ocv:func:`calibrateCamera` or :ocv:func:`stereoCalibrate` . :param imageSize: Input image size in pixels. @@ -249,7 +251,7 @@ The functions compute: \begin{array}{l} \texttt{rvec3} = \mathrm{rodrigues} ^{-1} \left ( \mathrm{rodrigues} ( \texttt{rvec2} ) \cdot \mathrm{rodrigues} ( \texttt{rvec1} ) \right ) \\ \texttt{tvec3} = \mathrm{rodrigues} ( \texttt{rvec2} ) \cdot \texttt{tvec1} + \texttt{tvec2} \end{array} , where :math:`\mathrm{rodrigues}` denotes a rotation vector to a rotation matrix transformation, and -:math:`\mathrm{rodrigues}^{-1}` denotes the inverse transformation. See :ref:`Rodrigues` for details. +:math:`\mathrm{rodrigues}^{-1}` denotes the inverse transformation. See :ocv:func:`Rodrigues` for details. Also, the functions can compute the derivatives of the output vectors with regards to the input vectors (see :ocv:func:`matMulDeriv` ). The functions are used inside :ocv:func:`stereoCalibrate` but can also be used in your own code where Levenberg-Marquardt or another gradient-based solver is used to optimize a function that contains a matrix multiplication. @@ -447,7 +449,7 @@ in a certain order (row by row, left to right in every row). Otherwise, if the f them, it returns 0. For example, a regular chessboard has 8 x 8 squares and 7 x 7 internal corners, that is, points where the black squares touch each other. The detected coordinates are approximate, and to determine their positions more accurately, the function calls :ocv:func:`cornerSubPix`. -You also may use the function :ref:`cornerSubPix` with different parameters if returned coordinates are not accurate enough. +You also may use the function :ocv:func:`cornerSubPix` with different parameters if returned coordinates are not accurate enough. Sample usage of detecting and drawing chessboard corners: :: @@ -655,7 +657,8 @@ Finds a perspective transformation between two planes. .. ocv:pyfunction:: cv2.findHomography(srcPoints, dstPoints[, method[, ransacReprojThreshold[, mask]]]) -> retval, mask -.. ocv:cfunction:: void cvFindHomography( const CvMat* srcPoints, const CvMat* dstPoints, CvMat* H int method=0, double ransacReprojThreshold=3, CvMat* status=NULL) +.. ocv:cfunction:: void cvFindHomography( const CvMat* srcPoints, const CvMat* dstPoints, CvMat* H, int method=0, double ransacReprojThreshold=3, CvMat* status=NULL) + .. ocv:pyoldfunction:: cv.FindHomography(srcPoints, dstPoints, H, method, ransacReprojThreshold=3.0, status=None)-> None :param srcPoints: Coordinates of the points in the original plane, a matrix of the type ``CV_32FC2`` or ``vector`` . @@ -722,11 +725,12 @@ Homography matrix is determined up to a scale. Thus, it is normalized so that :math:`h_{33}=1` . .. seealso:: -:ocv:func:`GetAffineTransform`, -:ocv:func:`GetPerspectiveTransform`, -:ocv:func:`EstimateRigidMotion`, -:ocv:func:`WarpPerspective`, -:ocv:func:`PerspectiveTransform` + + :ocv:func:`GetAffineTransform`, + :ocv:func:`GetPerspectiveTransform`, + :ocv:func:`EstimateRigidMotion`, + :ocv:func:`WarpPerspective`, + :ocv:func:`PerspectiveTransform` estimateAffine3D @@ -757,7 +761,7 @@ filterSpeckles -------------- Filters off small noise blobs (speckles) in the disparity map -.. ocv:function:: void filterSpeckles( InputOutputArray img, double newVal, int maxSpeckleSize, double maxDiff, InputOutputArray buf=noArray() ); +.. ocv:function:: void filterSpeckles( InputOutputArray img, double newVal, int maxSpeckleSize, double maxDiff, InputOutputArray buf=noArray() ) .. ocv:pyfunction:: cv2.filterSpeckles(img, newVal, maxSpeckleSize, maxDiff[, buf]) -> None @@ -789,8 +793,8 @@ Returns the new camera matrix based on the free scaling parameter. :param imageSize: Original image size. - :param alpha: Free scaling parameter between 0 (when all the pixels in the undistorted image are valid) and 1 (when all the source image pixels are retained in the undistorted image). See :ref:`StereoRectify` for details. - + :param alpha: Free scaling parameter between 0 (when all the pixels in the undistorted image are valid) and 1 (when all the source image pixels are retained in the undistorted image). See :ocv:func:`stereoRectify` for details. + :param newCameraMatrix: Output new camera matrix. :param newImageSize: Image size after rectification. By default,it is set to ``imageSize`` . @@ -1130,7 +1134,7 @@ The class implements the modified H. Hirschmuller algorithm HH08 that differs fr * Mutual information cost function is not implemented. Instead, a simpler Birchfield-Tomasi sub-pixel metric from BT96 is used. Though, the color images are supported as well. - * Some pre- and post- processing steps from K. Konolige algorithm :ocv:func:`StereoBM::operator ()` are included, for example: pre-filtering (``CV_STEREO_BM_XSOBEL`` type) and post-filtering (uniqueness check, quadratic interpolation and speckle filtering). + * Some pre- and post- processing steps from K. Konolige algorithm :ocv:func:`StereoBM::operator()` are included, for example: pre-filtering (``CV_STEREO_BM_XSOBEL`` type) and post-filtering (uniqueness check, quadratic interpolation and speckle filtering). @@ -1150,7 +1154,9 @@ StereoSGBM::StereoSGBM :param SADWindowSize: Matched block size. It must be an odd number ``>=1`` . Normally, it should be somewhere in the ``3..11`` range. - :param P1, P2: Parameters that control disparity smoothness. The larger the values are, the smoother the disparity is. ``P1`` is the penalty on the disparity change by plus or minus 1 between neighbor pixels. ``P2`` is the penalty on the disparity change by more than 1 between neighbor pixels. The algorithm requires ``P2 > P1`` . See ``stereo_match.cpp`` sample where some reasonably good ``P1`` and ``P2`` values are shown (like ``8*number_of_image_channels*SADWindowSize*SADWindowSize`` and ``32*number_of_image_channels*SADWindowSize*SADWindowSize`` , respectively). + :param P1: The first parameter controlling the disparity smoothness. See below. + + :param P2: The second parameter controlling the disparity smoothness. The larger the values are, the smoother the disparity is. ``P1`` is the penalty on the disparity change by plus or minus 1 between neighbor pixels. ``P2`` is the penalty on the disparity change by more than 1 between neighbor pixels. The algorithm requires ``P2 > P1`` . See ``stereo_match.cpp`` sample where some reasonably good ``P1`` and ``P2`` values are shown (like ``8*number_of_image_channels*SADWindowSize*SADWindowSize`` and ``32*number_of_image_channels*SADWindowSize*SADWindowSize`` , respectively). :param disp12MaxDiff: Maximum allowed difference (in integer pixel units) in the left-right disparity check. Set it to a non-positive value to disable the check. @@ -1247,7 +1253,7 @@ stereoCalibrate * **CV_CALIB_RATIONAL_MODEL** Enable coefficients k4, k5, and k6. To provide the backward compatibility, this extra flag should be explicitly specified to make the calibration function use the rational model and return 8 coefficients. If the flag is not set, the function computes and returns only 5 distortion coefficients. The function estimates transformation between two cameras making a stereo pair. If you have a stereo camera where the relative position and orientation of two cameras is fixed, and if you computed poses of an object relative to the first camera and to the second camera, (R1, T1) and (R2, T2), respectively (this can be done with -:ref:`solvePnP` ), then those poses definitely relate to each other. This means that, given ( +:ocv:func:`solvePnP` ), then those poses definitely relate to each other. This means that, given ( :math:`R_1`,:math:`T_1` ), it should be possible to compute ( :math:`R_2`,:math:`T_2` ). You only need to know the position and orientation of the second camera relative to the first camera. This is what the described function does. It computes ( :math:`R`,:math:`T` ) so that: @@ -1303,11 +1309,15 @@ stereoRectify :param T: Translation vector between coordinate systems of the cameras. - :param R1, R2: Output :math:`3 \times 3` rectification transforms (rotation matrices) for the first and the second cameras, respectively. + :param R1: Output 3x3 rectification transform (rotation matrix) for the first camera. + + :param R2: Output 3x3 rectification transform (rotation matrix) for the second camera. - :param P1, P2: Output :math:`3 \times 4` projection matrices in the new (rectified) coordinate systems. + :param P1: Output 3x4 projection matrix in the new (rectified) coordinate systems for the first camera. + + :param P2: Output 3x4 projection matrix in the new (rectified) coordinate systems for the second camera. - :param Q: Output :math:`4 \times 4` disparity-to-depth mapping matrix (see :ref:`reprojectImageTo3D` ). + :param Q: Output :math:`4 \times 4` disparity-to-depth mapping matrix (see :ocv:func:`reprojectImageTo3D` ). :param flags: Operation flags that may be zero or ``CV_CALIB_ZERO_DISPARITY`` . If the flag is set, the function makes the principal points of each camera have the same pixel coordinates in the rectified views. And if the flag is not set, the function may still shift the images in the horizontal or vertical direction (depending on the orientation of epipolar lines) to maximize the useful image area. @@ -1315,7 +1325,9 @@ stereoRectify :param newImageSize: New image resolution after rectification. The same size should be passed to :ocv:func:`initUndistortRectifyMap` (see the ``stereo_calib.cpp`` sample in OpenCV samples directory). When (0,0) is passed (default), it is set to the original ``imageSize`` . Setting it to larger value can help you preserve details in the original image, especially when there is a big radial distortion. - :param roi1, roi2: Optional output rectangles inside the rectified images where all the pixels are valid. If ``alpha=0`` , the ROIs cover the whole images. Otherwise, they are likely to be smaller (see the picture below). + :param roi1: + + :param roi2: Optional output rectangles inside the rectified images where all the pixels are valid. If ``alpha=0`` , the ROIs cover the whole images. Otherwise, they are likely to be smaller (see the picture below). The function computes the rotation matrices for each camera that (virtually) make both camera image planes the same plane. Consequently, this makes all the epipolar lines parallel and thus simplifies the dense stereo correspondence problem. The function takes the matrices computed by :ocv:func:`stereoCalibrate` as input. As output, it provides two rotation matrices and also two projection matrices in the new coordinates. The function distinguishes the following two cases: @@ -1371,13 +1383,17 @@ stereoRectifyUncalibrated .. ocv:cfunction:: void cvStereoRectifyUncalibrated( const CvMat* points1, const CvMat* points2, const CvMat* F, CvSize imageSize, CvMat* H1, CvMat* H2, double threshold=5 ) .. ocv:pyoldfunction:: cv.StereoRectifyUncalibrated(points1, points2, F, imageSize, H1, H2, threshold=5)-> None - :param points1, points2: Two arrays of corresponding 2D points. The same formats as in :ref:`findFundamentalMat` are supported. + :param points1: Array of feature points in the first image. + + :param points2: The corresponding points in the second image. The same formats as in :ocv:func:`findFundamentalMat` are supported. - :param F: Input fundamental matrix. It can be computed from the same set of point pairs using :ref:`findFundamentalMat` . + :param F: Input fundamental matrix. It can be computed from the same set of point pairs using :ocv:func:`findFundamentalMat` . :param imageSize: Size of the image. - :param H1, H2: Output rectification homography matrices for the first and for the second images. + :param H1: Output rectification homography matrix for the first image. + + :param H2: Output rectification homography matrix for the second image. :param threshold: Optional threshold used to filter out the outliers. If the parameter is greater than zero, all the point pairs that do not comply with the epipolar geometry (that is, the points for which :math:`|\texttt{points2[i]}^T*\texttt{F}*\texttt{points1[i]}|>\texttt{threshold}` ) are rejected prior to computing the homographies. Otherwise,all the points are considered inliers. diff --git a/modules/core/doc/basic_structures.rst b/modules/core/doc/basic_structures.rst index 483c7a51ca..0ea399a711 100644 --- a/modules/core/doc/basic_structures.rst +++ b/modules/core/doc/basic_structures.rst @@ -648,6 +648,7 @@ Finally, there are STL-style iterators that are smart enough to skip gaps betwee The matrix iterators are random-access iterators, so they can be passed to any STL algorithm, including ``std::sort()`` . +.. _MatrixExpressions: Matrix Expressions ------------------ @@ -701,6 +702,8 @@ Below is the formal description of the ``Mat`` methods. Mat::Mat ------------ +Various Mat constructors + .. ocv:function:: Mat::Mat() .. ocv:function:: Mat::Mat(int rows, int cols, int type) @@ -741,8 +744,6 @@ Mat::Mat .. ocv:function:: Mat::Mat(const Mat& m, const Range* ranges) - Provides various array constructors. - :param ndims: Array dimensionality. :param rows: Number of rows in a 2D array. @@ -786,24 +787,23 @@ often the default constructor is enough, and the proper matrix will be allocated Mat::~Mat ------------ -.. ocv:function:: Mat::~Mat() +The Mat destructor. - Provides a matrix destructor. +.. ocv:function:: Mat::~Mat() -The matrix destructor calls -:ocv:func:`Mat::release` . +The matrix destructor calls :ocv:func:`Mat::release` . Mat::operator = ------------------- +Provides matrix assignment operators. + .. ocv:function:: Mat& Mat::operator = (const Mat& m) .. ocv:function:: Mat& Mat::operator = (const MatExpr_Base& expr) .. ocv:function:: Mat& operator = (const Scalar& s) - Provides matrix assignment operators. - :param m: Assigned, right-hand-side matrix. Matrix assignment is an O(1) operation. This means that no data is copied but the data is shared and the reference counter, if any, is incremented. Before assigning new data, the old data is de-referenced via :ocv:func:`Mat::release` . :param expr: Assigned matrix expression object. As opposite to the first form of the assignment operation, the second form can reuse already allocated matrix if it has the right size and type to fit the matrix expression result. It is automatically handled by the real function that the matrix expressions is expanded to. For example, ``C=A+B`` is expanded to ``add(A, B, C)`` , and :func:`add` takes care of automatic ``C`` reallocation. @@ -815,18 +815,18 @@ These are available assignment operators. Since they all are very different, mak Mat::operator MatExpr ------------------------- -.. ocv:function:: Mat::operator MatExpr_() const +Provides a ``Mat`` -to- ``MatExpr`` cast operator. - Provides a ``Mat`` -to- ``MatExpr`` cast operator. +.. ocv:function:: Mat::operator MatExpr_() const The cast operator should not be called explicitly. It is used internally by the :ref:`MatrixExpressions` engine. Mat::row ------------ -.. ocv:function:: Mat Mat::row(int i) const +Creates a matrix header for the specified matrix row. - Creates a matrix header for the specified matrix row. +.. ocv:function:: Mat Mat::row(int i) const :param i: A 0-based row index. @@ -847,8 +847,7 @@ The method makes a new header for the specified matrix row and returns it. This A.row(i) = A.row(j); // will not work - This happens because ``A.row(i)`` forms a temporary header that is further assigned to another header. Remember that each of these operations is O(1), that is, no data is copied. Thus, the above assignment is not true if you may have expected the j-th row to be copied to the i-th row. To achieve that, you should either turn this simple assignment into an expression or use the - :ocv:func:`Mat::copyTo` method: :: + This happens because ``A.row(i)`` forms a temporary header that is further assigned to another header. Remember that each of these operations is O(1), that is, no data is copied. Thus, the above assignment is not true if you may have expected the j-th row to be copied to the i-th row. To achieve that, you should either turn this simple assignment into an expression or use the :ocv:func:`Mat::copyTo` method: :: Mat A; ... @@ -860,9 +859,9 @@ The method makes a new header for the specified matrix row and returns it. This Mat::col ------------ -.. ocv:function:: Mat Mat::col(int j) const +Creates a matrix header for the specified matrix column. - Creates a matrix header for the specified matrix column. +.. ocv:function:: Mat Mat::col(int j) const :param j: A 0-based column index. @@ -872,12 +871,12 @@ The method makes a new header for the specified matrix column and returns it. Th Mat::rowRange ----------------- +Creates a matrix header for the specified row span. + .. ocv:function:: Mat Mat::rowRange(int startrow, int endrow) const .. ocv:function:: Mat Mat::rowRange(const Range& r) const - Creates a matrix header for the specified row span. - :param startrow: A 0-based start index of the row span. :param endrow: A 0-based ending index of the row span. @@ -890,12 +889,12 @@ The method makes a new header for the specified row span of the matrix. Similarl Mat::colRange ----------------- +Creates a matrix header for the specified row span. + .. ocv:function:: Mat Mat::colRange(int startcol, int endcol) const .. ocv:function:: Mat Mat::colRange(const Range& r) const - Creates a matrix header for the specified row span. - :param startcol: A 0-based start index of the column span. :param endcol: A 0-based ending index of the column span. @@ -908,12 +907,12 @@ The method makes a new header for the specified column span of the matrix. Simil Mat::diag ------------- +Extracts a diagonal from a matrix, or creates a diagonal matrix. + .. ocv:function:: Mat Mat::diag(int d) const .. ocv:function:: static Mat Mat::diag(const Mat& matD) - Extracts a diagonal from a matrix, or creates a diagonal matrix. - :param d: Index of the diagonal, with the following values: * **d=0** is the main diagonal. @@ -930,20 +929,20 @@ The method makes a new header for the specified matrix diagonal. The new matrix Mat::clone -------------- -.. ocv:function:: Mat Mat::clone() const +Creates a full copy of the array and the underlying data. - Creates a full copy of the array and the underlying data. +.. ocv:function:: Mat Mat::clone() const The method creates a full copy of the array. The original ``step[]`` is not taken into account. So, the array copy is a continuous array occupying ``total()*elemSize()`` bytes. Mat::copyTo --------------- +Copies the matrix to another one. + .. ocv:function:: void Mat::copyTo( OutputArray m ) const .. ocv:function:: void Mat::copyTo( OutputArray m, InputArray mask ) const - Copies the matrix to another one. - :param m: Destination matrix. If it does not have a proper size or type before the operation, it is reallocated. :param mask: Operation mask. Its non-zero elements indicate which matrix elements need to be copied. @@ -961,9 +960,9 @@ When the operation mask is specified, and the ``Mat::create`` call shown above r Mat::convertTo ------------------ -.. ocv:function:: void Mat::convertTo( OutputArray m, int rtype, double alpha=1, double beta=0 ) const +Converts an array to another datatype with optional scaling. - Converts an array to another datatype with optional scaling. +.. ocv:function:: void Mat::convertTo( OutputArray m, int rtype, double alpha=1, double beta=0 ) const :param m: Destination matrix. If it does not have a proper size or type before the operation, it is reallocated. @@ -982,9 +981,9 @@ The method converts source pixel values to the target datatype. ``saturate_cast< Mat::assignTo ----------------- -.. ocv:function:: void Mat::assignTo( Mat& m, int type=-1 ) const +Provides a functional form of ``convertTo``. - Provides a functional form of ``convertTo``. +.. ocv:function:: void Mat::assignTo( Mat& m, int type=-1 ) const :param m: Destination array. @@ -995,9 +994,9 @@ This is an internally used method called by the Mat::setTo -------------- -.. ocv:function:: Mat& Mat::setTo(const Scalar& s, InputArray mask=noArray()) +Sets all or some of the array elements to the specified value. - Sets all or some of the array elements to the specified value. +.. ocv:function:: Mat& Mat::setTo(const Scalar& s, InputArray mask=noArray()) :param s: Assigned scalar converted to the actual array type. @@ -1006,9 +1005,9 @@ Mat::setTo Mat::reshape ---------------- -.. ocv:function:: Mat Mat::reshape(int cn, int rows=0) const +Changes the shape and/or the number of channels of a 2D matrix without copying the data. - Changes the shape and/or the number of channels of a 2D matrix without copying the data. +.. ocv:function:: Mat Mat::reshape(int cn, int rows=0) const :param cn: New number of channels. If the parameter is 0, the number of channels remains the same. @@ -1039,9 +1038,9 @@ For example, if there is a set of 3D points stored as an STL vector, and you wan Mat::t ---------- -.. ocv:function:: MatExpr Mat::t() const +Transposes a matrix. - Transposes a matrix. +.. ocv:function:: MatExpr Mat::t() const The method performs matrix transposition by means of matrix expressions. It does not perform the actual transposition but returns a temporary matrix transposition object that can be further used as a part of more complex matrix expressions or can be assigned to a matrix: :: @@ -1051,9 +1050,9 @@ The method performs matrix transposition by means of matrix expressions. It does Mat::inv ------------ -.. ocv:function:: MatExpr Mat::inv(int method=DECOMP_LU) const +Inverses a matrix. - Inverses a matrix. +.. ocv:function:: MatExpr Mat::inv(int method=DECOMP_LU) const :param method: Matrix inversion method. Possible values are the following: @@ -1068,9 +1067,9 @@ The method performs a matrix inversion by means of matrix expressions. This mean Mat::mul ------------ -.. ocv:function:: MatExpr Mat::mul(InputArray m, double scale=1) const +Performs an element-wise multiplication or division of the two matrices. - Performs an element-wise multiplication or division of the two matrices. +.. ocv:function:: MatExpr Mat::mul(InputArray m, double scale=1) const :param m: Another array of the same type and the same size as ``*this``, or a matrix expression. @@ -1085,9 +1084,9 @@ Example: :: Mat::cross -------------- -.. ocv:function:: Mat Mat::cross(InputArray m) const +Computes a cross-product of two 3-element vectors. - Computes a cross-product of two 3-element vectors. +.. ocv:function:: Mat Mat::cross(InputArray m) const :param m: Another cross-product operand. @@ -1096,9 +1095,9 @@ The method computes a cross-product of two 3-element vectors. The vectors must b Mat::dot ------------ -.. ocv:function:: double Mat::dot(InputArray m) const +Computes a dot-product of two vectors. - Computes a dot-product of two vectors. +.. ocv:function:: double Mat::dot(InputArray m) const :param m: Another dot-product operand. @@ -1107,12 +1106,12 @@ The method computes a dot-product of two matrices. If the matrices are not singl Mat::zeros -------------- +Returns a zero array of the specified size and type. + .. ocv:function:: static MatExpr Mat::zeros(int rows, int cols, int type) .. ocv:function:: static MatExpr Mat::zeros(Size size, int type) .. ocv:function:: static MatExpr Mat::zeros(int ndims, const int* sizes, int type) - Returns a zero array of the specified size and type. - :param ndims: Array dimensionality. :param rows: Number of rows. @@ -1136,12 +1135,12 @@ In the example above, a new matrix is allocated only if ``A`` is not a 3x3 float Mat::ones ------------- +Returns an array of all 1's of the specified size and type. + .. ocv:function:: static MatExpr Mat::ones(int rows, int cols, int type) .. ocv:function:: static MatExpr Mat::ones(Size size, int type) .. ocv:function:: static MatExpr Mat::ones(int ndims, const int* sizes, int type) - Returns an array of all 1's of the specified size and type. - :param ndims: Array dimensionality. :param rows: Number of rows. @@ -1165,11 +1164,11 @@ The above operation does not form a 100x100 matrix of 1's and then multiply it b Mat::eye ------------ +Returns an identity matrix of the specified size and type. + .. ocv:function:: static MatExpr Mat::eye(int rows, int cols, int type) .. ocv:function:: static MatExpr Mat::eye(Size size, int type) - Returns an identity matrix of the specified size and type. - :param rows: Number of rows. :param cols: Number of columns. @@ -1188,12 +1187,12 @@ The method returns a Matlab-style identity matrix initializer, similarly to Mat::create --------------- +Allocates new array data if needed. + .. ocv:function:: void Mat::create(int rows, int cols, int type) .. ocv:function:: void Mat::create(Size size, int type) .. ocv:function:: void Mat::create(int ndims, const int* sizes, int type) - Allocates new array data if needed. - :param ndims: New array dimensionality. :param rows: New number of rows. @@ -1242,9 +1241,9 @@ because ``cvtColor`` , as well as the most of OpenCV functions, calls ``Mat::cre Mat::addref --------------- -.. ocv:function:: void Mat::addref() +Increments the reference counter. - Increments the reference counter. +.. ocv:function:: void Mat::addref() The method increments the reference counter associated with the matrix data. If the matrix header points to an external data set (see :ocv:func:`Mat::Mat` ), the reference counter is NULL, and the method has no effect in this case. Normally, to avoid memory leaks, the method should not be called explicitly. It is called implicitly by the matrix assignment operator. The reference counter increment is an atomic operation on the platforms that support it. Thus, it is safe to operate on the same matrices asynchronously in different threads. @@ -1252,9 +1251,9 @@ The method increments the reference counter associated with the matrix data. If Mat::release ---------------- -.. ocv:function:: void Mat::release() +Decrements the reference counter and deallocates the matrix if needed. - Decrements the reference counter and deallocates the matrix if needed. +.. ocv:function:: void Mat::release() The method decrements the reference counter associated with the matrix data. When the reference counter reaches 0, the matrix data is deallocated and the data and the reference counter pointers are set to NULL's. If the matrix header points to an external data set (see :ocv:func:`Mat::Mat` ), the reference counter is NULL, and the method has no effect in this case. @@ -1263,11 +1262,11 @@ This method can be called manually to force the matrix data deallocation. But si Mat::resize --------------- +Changes the number of matrix rows. + .. ocv:function:: void Mat::resize( size_t sz ) .. ocv:function:: void Mat::resize( size_t sz, const Scalar& s ) - Changes the number of matrix rows. - :param sz: New number of rows. :param s: Value assigned to the newly added elements. @@ -1276,9 +1275,9 @@ The methods change the number of matrix rows. If the matrix is reallocated, the Mat::reserve --------------- -.. ocv:function:: void Mat::reserve( size_t sz ) +Reserves space for the certain number of rows. - Reserves space for the certain number of rows. +.. ocv:function:: void Mat::reserve( size_t sz ) :param sz: Number of rows. @@ -1286,20 +1285,20 @@ The method reserves space for ``sz`` rows. If the matrix already has enough spac Mat::push_back -------------- +Adds elements to the bottom of the matrix. + .. ocv:function:: template void Mat::push_back(const T& elem) .. ocv:function:: void Mat::push_back(const Mat& elem) - Adds elements to the bottom of the matrix. - :param elem: Added element(s). The methods add one or more elements to the bottom of the matrix. They emulate the corresponding method of the STL vector class. When ``elem`` is ``Mat`` , its type and the number of columns must be the same as in the container matrix. Mat::pop_back ------------- -.. ocv:function:: template void Mat::pop_back(size_t nelems=1) +Removes elements from the bottom of the matrix. - Removes elements from the bottom of the matrix. +.. ocv:function:: template void Mat::pop_back(size_t nelems=1) :param nelems: Number of removed rows. If it is greater than the total number of rows, an exception is thrown. @@ -1308,9 +1307,9 @@ The method removes one or more rows from the bottom of the matrix. Mat::locateROI ------------------ -.. ocv:function:: void Mat::locateROI( Size& wholeSize, Point& ofs ) const +Locates the matrix header within a parent matrix. - Locates the matrix header within a parent matrix. +.. ocv:function:: void Mat::locateROI( Size& wholeSize, Point& ofs ) const :param wholeSize: Output parameter that contains the size of the whole matrix containing ``*this`` is a part. @@ -1325,9 +1324,9 @@ After you extracted a submatrix from a matrix using Mat::adjustROI ------------------ -.. ocv:function:: Mat& Mat::adjustROI( int dtop, int dbottom, int dleft, int dright ) +Adjusts a submatrix size and position within the parent matrix. - Adjusts a submatrix size and position within the parent matrix. +.. ocv:function:: Mat& Mat::adjustROI( int dtop, int dbottom, int dleft, int dright ) :param dtop: Shift of the top submatrix boundary upwards. @@ -1350,19 +1349,19 @@ It is your responsibility to make sure ``adjustROI`` does not cross the parent m The function is used internally by the OpenCV filtering functions, like :ocv:func:`filter2D` , morphological operations, and so on. -See Also: -:ocv:func:`copyMakeBorder` +.. seealso:: :ocv:func:`copyMakeBorder` Mat::operator() ------------------- +Extracts a rectangular submatrix. + .. ocv:function:: Mat Mat::operator()( Range rowRange, Range colRange ) const .. ocv:function:: Mat Mat::operator()( const Rect& roi ) const .. ocv:function:: Mat Mat::operator()( const Ranges* ranges ) const - Extracts a rectangular submatrix. :param rowRange: Start and end row of the extracted submatrix. The upper boundary is not included. To select all the rows, use ``Range::all()``. @@ -1381,9 +1380,10 @@ The operators make a new header for the specified sub-array of ``*this`` . They Mat::operator CvMat ----------------------- +Creates the ``CvMat`` header for the matrix. + .. ocv:function:: Mat::operator CvMat() const - Creates the ``CvMat`` header for the matrix. The operator creates the ``CvMat`` header for the matrix without copying the underlying data. The reference counter is not taken into account by this operation. Thus, you should make sure than the original matrix is not deallocated while the ``CvMat`` header is used. The operator is useful for intermixing the new and the old OpenCV API's, for example: :: @@ -1399,25 +1399,25 @@ where ``mycvOldFunc`` is a function written to work with OpenCV 1.x data structu Mat::operator IplImage -------------------------- -.. ocv:function:: Mat::operator IplImage() const +Creates the ``IplImage`` header for the matrix. - Creates the ``IplImage`` header for the matrix. +.. ocv:function:: Mat::operator IplImage() const The operator creates the ``IplImage`` header for the matrix without copying the underlying data. You should make sure than the original matrix is not deallocated while the ``IplImage`` header is used. Similarly to ``Mat::operator CvMat`` , the operator is useful for intermixing the new and the old OpenCV API's. Mat::total -------------- -.. ocv:function:: size_t Mat::total() const +Returns the total number of array elements. - Returns the total number of array elements. +.. ocv:function:: size_t Mat::total() const The method returns the number of array elements (a number of pixels if the array represents an image). Mat::isContinuous --------------------- -.. ocv:function:: bool Mat::isContinuous() const +Reports whether the matrix is continuous or not. - Reports whether the matrix is continuous or not. +.. ocv:function:: bool Mat::isContinuous() const The method returns ``true`` if the matrix elements are stored continuously without gaps at the end of each row. Otherwise, it returns ``false``. Obviously, ``1x1`` or ``1xN`` matrices are always continuous. Matrices created with :ocv:func:`Mat::create` are always continuous. But if you extract a part of the matrix using @@ -1486,36 +1486,36 @@ Another OpenCV idiom in this function, a call of Mat::elemSize ----------------- -.. ocv:function:: size_t Mat::elemSize(void) const +Returns the matrix element size in bytes. - Returns the matrix element size in bytes. +.. ocv:function:: size_t Mat::elemSize(void) const The method returns the matrix element size in bytes. For example, if the matrix type is ``CV_16SC3`` , the method returns ``3*sizeof(short)`` or 6. Mat::elemSize1 ------------------ -.. ocv:function:: size_t Mat::elemSize() const +Returns the size of each matrix element channel in bytes. - Returns the size of each matrix element channel in bytes. +.. ocv:function:: size_t Mat::elemSize() const The method returns the matrix element channel size in bytes, that is, it ignores the number of channels. For example, if the matrix type is ``CV_16SC3`` , the method returns ``sizeof(short)`` or 2. Mat::type ------------- -.. ocv:function:: int Mat::type() const +Returns the type of a matrix element. - Returns the type of a matrix element. +.. ocv:function:: int Mat::type() const The method returns a matrix element type. This is an identifier compatible with the ``CvMat`` type system, like ``CV_16SC3`` or 16-bit signed 3-channel array, and so on. Mat::depth -------------- -.. ocv:function:: int Mat::depth() const +Returns the depth of a matrix element. - Returns the depth of a matrix element. +.. ocv:function:: int Mat::depth() const The method returns the identifier of the matrix element depth (the type of each individual channel). For example, for a 16-bit signed 3-channel array, the method returns ``CV_16S`` . A complete list of matrix types contains the following values: @@ -1536,18 +1536,18 @@ The method returns the identifier of the matrix element depth (the type of each Mat::channels ----------------- -.. ocv:function:: int Mat::channels() const +Returns the number of matrix channels. - Returns the number of matrix channels. +.. ocv:function:: int Mat::channels() const The method returns the number of matrix channels. Mat::step1 -------------- -.. ocv:function:: size_t Mat::step1() const +Returns a normalized step. - Returns a normalized step. +.. ocv:function:: size_t Mat::step1() const The method returns a matrix step divided by :ocv:func:`Mat::elemSize1()` . It can be useful to quickly access an arbitrary matrix element. @@ -1555,24 +1555,26 @@ The method returns a matrix step divided by Mat::size ------------- -.. ocv:function:: Size Mat::size() const +Returns a matrix size. - Returns a matrix size. +.. ocv:function:: Size Mat::size() const -The method returns a matrix size: ``Size(cols, rows)`` . +The method returns a matrix size: ``Size(cols, rows)`` . When the matrix is more than 2-dimensional, the returned size is (-1, -1). Mat::empty -------------- -.. ocv:function:: bool Mat::empty() const +Returns ``true`` if the array has no elemens. - Returns ``true`` if the array has no elemens. +.. ocv:function:: bool Mat::empty() const The method returns ``true`` if ``Mat::total()`` is 0 or if ``Mat::data`` is NULL. Because of ``pop_back()`` and ``resize()`` methods ``M.total() == 0`` does not imply that ``M.data == NULL`` . Mat::ptr ------------ +Returns a pointer to the specified matrix row. + .. ocv:function:: uchar* Mat::ptr(int i=0) .. ocv:function:: const uchar* Mat::ptr(int i=0) const @@ -1581,8 +1583,6 @@ Mat::ptr .. ocv:function:: template const _Tp* Mat::ptr(int i=0) const - Returns a pointer to the specified matrix row. - :param i: A 0-based row index. The methods return ``uchar*`` or typed pointer to the specified matrix row. See the sample in @@ -1591,6 +1591,8 @@ The methods return ``uchar*`` or typed pointer to the specified matrix row. See Mat::at ----------- +Returns a reference to the specified array element. + .. ocv:function:: template T& Mat::at(int i) const .. ocv:function:: template const T& Mat::at(int i) const @@ -1611,12 +1613,12 @@ Mat::at .. ocv:function:: template const T& Mat::at(const int* idx) const - Returns a reference to the specified array element. - - :param i, j, k: Indices along the dimensions 0, 1, and 2, respectively. + :param i: Index along the dimension 0 + :param j: Index along the dimension 1 + :param k: Index along the dimension 2 :param pt: Element position specified as ``Point(j,i)`` . - + :param idx: Array of ``Mat::dims`` indices. The template methods return a reference to the specified array element. For the sake of higher performance, the index range checks are only performed in the Debug configuration. @@ -1634,9 +1636,11 @@ The example below initializes a Hilbert matrix: :: Mat::begin -------------- -.. ocv:function:: template MatIterator_<_Tp> Mat::begin() template MatConstIterator_<_Tp> Mat::begin() const +Returns the matrix iterator and sets it to the first matrix element. + +.. ocv:function:: template MatIterator_<_Tp> Mat::begin() - Returns the matrix iterator and sets it to the first matrix element. +.. ocv:function:: template MatConstIterator_<_Tp> Mat::begin() const The methods return the matrix read-only or read-write iterators. The use of matrix iterators is very similar to the use of bi-directional STL iterators. In the example below, the alpha blending function is rewritten using the matrix iterators: :: @@ -1673,10 +1677,11 @@ The methods return the matrix read-only or read-write iterators. The use of matr Mat::end ------------ +Returns the matrix iterator and sets it to the after-last matrix element. + .. ocv:function:: template MatIterator_<_Tp> Mat::end() -.. ocv:function:: template MatConstIterator_<_Tp> Mat::end() const - Returns the matrix iterator and sets it to the after-last matrix element. +.. ocv:function:: template MatConstIterator_<_Tp> Mat::end() const The methods return the matrix read-only or read-write iterators, set to the point following the last matrix element. diff --git a/modules/core/doc/drawing_functions.rst b/modules/core/doc/drawing_functions.rst index 2a8cc8e0e9..3334f3b910 100644 --- a/modules/core/doc/drawing_functions.rst +++ b/modules/core/doc/drawing_functions.rst @@ -271,7 +271,7 @@ InitFont -------- Initializes font structure (OpenCV 1.x API). -.. c:function:: void cvInitFont( CvFont* font, int fontFace, double hscale, double vscale, double shear=0, int thickness=1, int lineType=8 ) +.. ocv:cfunction:: void cvInitFont( CvFont* font, int fontFace, double hscale, double vscale, double shear=0, int thickness=1, int lineType=8 ) :param font: Pointer to the font structure initialized by the function @@ -308,7 +308,7 @@ Initializes font structure (OpenCV 1.x API). :param thickness: Thickness of the text strokes - :param lineType: Type of the strokes, see :ref:`Line` description + :param lineType: Type of the strokes, see :ocv:func:`line` description The function initializes the font structure that can be passed to text rendering functions. diff --git a/modules/core/doc/intro.rst b/modules/core/doc/intro.rst index 9ee72563bc..670a4aa5a8 100644 --- a/modules/core/doc/intro.rst +++ b/modules/core/doc/intro.rst @@ -92,7 +92,7 @@ you can use:: Ptr ptr = new T(...); That is, ``Ptr ptr`` incapsulates a pointer to a ``T`` instance and a reference counter associated with the pointer. See the -:ref:`Ptr` +:ocv:class:`Ptr` description for details. .. _AutomaticAllocation: @@ -176,7 +176,7 @@ Multi-channel (``n``-channel) types can be specified using the following options .. note:: ``CV_32FC1 == CV_32F``, ``CV_32FC2 == CV_32FC(2) == CV_MAKETYPE(CV_32F, 2)``, and ``CV_MAKETYPE(depth, n) == ((x&7)<<3) + (n-1)``. This means that the constant type is formed from the ``depth``, taking the lowest 3 bits, and the number of channels minus 1, taking the next ``log2(CV_CN_MAX)`` bits. -Examples:: +Examples: :: Mat mtx(3, 3, CV_32F); // make a 3x3 floating-point matrix Mat cmtx(10, 1, CV_64FC2); // make a 10x1 2-channel floating-point diff --git a/modules/core/doc/operations_on_arrays.rst b/modules/core/doc/operations_on_arrays.rst index 1d5f9379a8..b29ae60115 100644 --- a/modules/core/doc/operations_on_arrays.rst +++ b/modules/core/doc/operations_on_arrays.rst @@ -18,7 +18,7 @@ Computes an absolute value of each matrix element. * ``C = abs(A)`` is equivalent to ``absdiff(A, Scalar::all(0), C)`` - * ``C = Mat_ >(abs(A*alpha + beta))`` is equivalent to :ocv:funcx:`convertScaleAbs`(A, C, alpha, beta)` + * ``C = Mat_ >(abs(A*alpha + beta))`` is equivalent to :ocv:funcx:`convertScaleAbs` (A, C, alpha, beta) The output matrix has the same size and the same type as the input one except for the last case, where ``C`` is ``depth=CV_8U`` . @@ -2172,7 +2172,7 @@ PCA constructors :param maxComponents: Maximum number of components that PCA should retain. By default, all the components are retained. The default constructor initializes an empty PCA structure. The second constructor initializes the structure and calls -:ocv:func:`PCA::operator ()` . +:ocv:func:`PCA::operator()` . @@ -3114,7 +3114,7 @@ The constructors. * **SVD::FULL_UV** When the matrix is not square, by default the algorithm produces ``u`` and ``vt`` matrices of sufficiently large size for the further ``A`` reconstruction. If, however, ``FULL_UV`` flag is specified, ``u`` and ``vt`` will be full-size square orthogonal matrices. The first constructor initializes an empty ``SVD`` structure. The second constructor initializes an empty ``SVD`` structure and then calls -:ocv:func:`SVD::operator ()` . +:ocv:func:`SVD::operator()` . SVD::operator () @@ -3163,7 +3163,7 @@ Performs SVD of a matrix :param flags: Opertion flags - see :ocv:func:`SVD::SVD`. -The methods/functions perform SVD of matrix. Unlike ``SVD::SVD`` constructor and ``SVD::operator ()``, they store the results to the user-provided matrices. :: +The methods/functions perform SVD of matrix. Unlike ``SVD::SVD`` constructor and ``SVD::operator()``, they store the results to the user-provided matrices. :: Mat A, w, u, vt; SVD::compute(A, w, u, vt); @@ -3231,7 +3231,7 @@ Calculates the sum of array elements. .. ocv:function:: Scalar sum(InputArray arr) -.. ocv:function:: cv2.sumElems(arr) -> retval +.. ocv:pyfunction:: cv2.sumElems(arr) -> retval .. ocv:cfunction:: CvScalar cvSum(const CvArr* arr) .. ocv:pyoldfunction:: cv.Sum(arr)-> CvScalar diff --git a/modules/core/src/arithm.cpp b/modules/core/src/arithm.cpp index 07a1894613..fc9f6685d3 100644 --- a/modules/core/src/arithm.cpp +++ b/modules/core/src/arithm.cpp @@ -988,9 +988,14 @@ void binary_op(InputArray _src1, InputArray _src2, OutputArray _dst, c = src1.channels(); } - Size sz = getContinuousSize(src1, src2, dst, c); - func(src1.data, src1.step, src2.data, src2.step, dst.data, dst.step, sz, 0); - return; + Size sz = getContinuousSize(src1, src2, dst); + size_t len = sz.width*(size_t)c; + if( len == (size_t)(int)len ) + { + sz.width = (int)len; + func(src1.data, src1.step, src2.data, src2.step, dst.data, dst.step, sz, 0); + return; + } } if( (kind1 == _InputArray::MATX) + (kind2 == _InputArray::MATX) == 1 || @@ -1045,6 +1050,9 @@ void binary_op(InputArray _src1, InputArray _src2, OutputArray _dst, NAryMatIterator it(arrays, ptrs); size_t total = it.size, blocksize = total; + if( blocksize*c > INT_MAX ) + blocksize = INT_MAX/c; + if( haveMask ) { blocksize = std::min(blocksize, blocksize0); diff --git a/modules/core/src/copy.cpp b/modules/core/src/copy.cpp index e33177dae9..620154f733 100644 --- a/modules/core/src/copy.cpp +++ b/modules/core/src/copy.cpp @@ -171,11 +171,12 @@ void Mat::copyTo( OutputArray _dst ) const // to handle the copying 1xn matrix => nx1 std vector. Size sz = size() == dst.size() ? - getContinuousSize(*this, dst, (int)elemSize()) : - getContinuousSize(*this, (int)elemSize()); + getContinuousSize(*this, dst) : + getContinuousSize(*this); + size_t len = sz.width*elemSize(); for( ; sz.height--; sptr += step, dptr += dst.step ) - memcpy( dptr, sptr, sz.width ); + memcpy( dptr, sptr, len ); } return; } diff --git a/modules/core/test/test_arithm.cpp b/modules/core/test/test_arithm.cpp index aa638cf69b..b20747085c 100644 --- a/modules/core/test/test_arithm.cpp +++ b/modules/core/test/test_arithm.cpp @@ -195,6 +195,13 @@ struct AddWeightedOp : public BaseAddOp struct MulOp : public BaseElemWiseOp { MulOp() : BaseElemWiseOp(2, FIX_BETA+FIX_GAMMA, 1, 1, Scalar::all(0)) {}; + void getValueRange(int depth, double& minval, double& maxval) + { + minval = depth < CV_32S ? cvtest::getMinVal(depth) : depth == CV_32S ? -1000000 : -1000.; + maxval = depth < CV_32S ? cvtest::getMaxVal(depth) : depth == CV_32S ? 1000000 : 1000.; + minval = std::max(minval, -30000.); + maxval = std::min(maxval, 30000.); + } void op(const vector& src, Mat& dst, const Mat&) { cv::multiply(src[0], src[1], dst, alpha); diff --git a/modules/ffmpeg/ffopencv.cpp b/modules/ffmpeg/ffopencv.cpp index e018641a7f..98e4c6b420 100644 --- a/modules/ffmpeg/ffopencv.cpp +++ b/modules/ffmpeg/ffopencv.cpp @@ -528,7 +528,7 @@ That's all there is to it! #if defined _MSC_VER && _MSC_VER >= 1200 -#if !defined(_MT) || defined(_DLL) +#if !defined(_MT) || defined(_DLL) || defined(_MSC_VER) extern "C" { __declspec(dllexport) unsigned int __lc_codepage = 0; } #endif #ifdef _M_X64 diff --git a/modules/gpu/doc/camera_calibration_and_3d_reconstruction.rst b/modules/gpu/doc/camera_calibration_and_3d_reconstruction.rst index 5007e2c2d0..13b654925e 100644 --- a/modules/gpu/doc/camera_calibration_and_3d_reconstruction.rst +++ b/modules/gpu/doc/camera_calibration_and_3d_reconstruction.rst @@ -487,7 +487,7 @@ gpu::reprojectImageTo3D :param xyzw: Output 4-channel floating-point image of the same size as ``disp`` . Each element of ``xyzw(x,y)`` contains 3D coordinates ``(x,y,z,1)`` of the point ``(x,y)`` , computed from the disparity map. - :param Q: :math:`4 \times 4` perspective transformation matrix that can be obtained via :ref:`StereoRectify` . + :param Q: :math:`4 \times 4` perspective transformation matrix that can be obtained via :ocv:func:`stereoRectify` . :param stream: Stream for the asynchronous version. diff --git a/modules/gpu/doc/image_filtering.rst b/modules/gpu/doc/image_filtering.rst index 29f28b2ee7..04c70b3a42 100644 --- a/modules/gpu/doc/image_filtering.rst +++ b/modules/gpu/doc/image_filtering.rst @@ -115,6 +115,7 @@ By using ``FilterEngine_GPU`` instead of functions you can avoid unnecessary mem .. note:: The GPU filters do not support the in-place mode. .. seealso:: + :ocv:class:`gpu::BaseRowFilter_GPU`, :ocv:class:`gpu::BaseColumnFilter_GPU`, :ocv:class:`gpu::BaseFilter_GPU`, @@ -454,11 +455,13 @@ gpu::getLinearRowFilter_GPU :param borderType: Pixel extrapolation method. For details, see :ocv:func:`borderInterpolate`. For details on limitations, see below. - There are two versions of the algorithm: NPP and OpenCV. - * NPP version is called when ``srcType == CV_8UC1`` or ``srcType == CV_8UC4`` and ``bufType == srcType`` . Otherwise, the OpenCV version is called. NPP supports only ``BORDER_CONSTANT`` border type and does not check indices outside the image. - * OpenCV version supports only ``CV_32F`` buffer depth and ``BORDER_REFLECT101``,``BORDER_REPLICATE``, and ``BORDER_CONSTANT`` border types. It checks indices outside the image. +There are two versions of the algorithm: NPP and OpenCV. + + * NPP version is called when ``srcType == CV_8UC1`` or ``srcType == CV_8UC4`` and ``bufType == srcType`` . Otherwise, the OpenCV version is called. NPP supports only ``BORDER_CONSTANT`` border type and does not check indices outside the image. + + * OpenCV version supports only ``CV_32F`` buffer depth and ``BORDER_REFLECT101``,``BORDER_REPLICATE``, and ``BORDER_CONSTANT`` border types. It checks indices outside the image. -See Also:,:ocv:func:`createSeparableLinearFilter` . +.. seealso:: :ocv:func:`createSeparableLinearFilter` . .. index:: gpu::getLinearColumnFilter_GPU @@ -496,12 +499,15 @@ gpu::createSeparableLinearFilter_GPU :param dstType: Destination array type. ``CV_8UC1``, ``CV_8UC4``, ``CV_16SC1``, ``CV_16SC2``, ``CV_32SC1``, ``CV_32FC1`` destination types are supported. - :param rowKernel, columnKernel: Filter coefficients. + :param rowKernel: Horizontal filter coefficients. + + :param columnKernel: Vertical filter coefficients. :param anchor: Anchor position within the kernel. Negative values mean that anchor is positioned at the aperture center. - :param rowBorderType, columnBorderType: Pixel extrapolation method in the horizontal and vertical directions For details, see :ocv:func:`borderInterpolate`. For details on limitations, see :ocv:func:`gpu::getLinearRowFilter_GPU`, cpp:ocv:func:`gpu::getLinearColumnFilter_GPU`. - + :param rowBorderType: Pixel extrapolation method in the vertical direction For details, see :ocv:func:`borderInterpolate`. For details on limitations, see :ocv:func:`gpu::getLinearRowFilter_GPU`, cpp:ocv:func:`gpu::getLinearColumnFilter_GPU`. + + :param columnBorderType: Pixel extrapolation method in the horizontal direction. .. seealso:: :ocv:func:`gpu::getLinearRowFilter_GPU`, :ocv:func:`gpu::getLinearColumnFilter_GPU`, :ocv:func:`createSeparableLinearFilter` @@ -519,11 +525,15 @@ gpu::sepFilter2D :param ddepth: Destination image depth. ``CV_8U``, ``CV_16S``, ``CV_32S``, and ``CV_32F`` are supported. - :param kernelX, kernelY: Filter coefficients. + :param kernelX: Horizontal filter coefficients. + + :param kernelY: Vertical filter coefficients. :param anchor: Anchor position within the kernel. The default value ``(-1, 1)`` means that the anchor is at the kernel center. - :param rowBorderType, columnBorderType: Pixel extrapolation method. For details, see :ocv:func:`borderInterpolate`. + :param rowBorderType: Pixel extrapolation method in the vertical direction. For details, see :ocv:func:`borderInterpolate`. + + :param columnBorderType: Pixel extrapolation method in the horizontal direction. .. seealso:: :ocv:func:`gpu::createSeparableLinearFilter_GPU`, :ocv:func:`sepFilter2D` @@ -545,7 +555,10 @@ gpu::createDerivFilter_GPU :param ksize: Aperture size. See :ocv:func:`getDerivKernels` for details. - :param rowBorderType, columnBorderType: Pixel extrapolation method. See :ocv:func:`borderInterpolate` for details. + :param rowBorderType: Pixel extrapolation method in the vertical direction. For details, see :ocv:func:`borderInterpolate`. + + :param columnBorderType: Pixel extrapolation method in the horizontal direction. + .. seealso:: :ocv:func:`gpu::createSeparableLinearFilter_GPU`, :ocv:func:`createDerivFilter` @@ -571,7 +584,9 @@ gpu::Sobel :param scale: Optional scale factor for the computed derivative values. By default, no scaling is applied. For details, see :ocv:func:`getDerivKernels` . - :param rowBorderType, columnBorderType: Pixel extrapolation method. See :ocv:func:`borderInterpolate` for details. + :param rowBorderType: Pixel extrapolation method in the vertical direction. For details, see :ocv:func:`borderInterpolate`. + + :param columnBorderType: Pixel extrapolation method in the horizontal direction. .. seealso:: :ocv:func:`gpu::createSeparableLinearFilter_GPU`, :ocv:func:`Sobel` @@ -595,7 +610,9 @@ gpu::Scharr :param scale: Optional scale factor for the computed derivative values. By default, no scaling is applied. See :ocv:func:`getDerivKernels` for details. - :param rowBorderType, columnBorderType: Pixel extrapolation method. For details, see :ocv:func:`borderInterpolate` and :ocv:func:`Scharr` . + :param rowBorderType: Pixel extrapolation method in the vertical direction. For details, see :ocv:func:`borderInterpolate`. + + :param columnBorderType: Pixel extrapolation method in the horizontal direction. .. seealso:: :ocv:func:`gpu::createSeparableLinearFilter_GPU`, :ocv:func:`Scharr` @@ -615,7 +632,9 @@ gpu::createGaussianFilter_GPU :param sigmaY: Gaussian sigma in the vertical direction. If 0, then :math:`\texttt{sigmaY}\leftarrow\texttt{sigmaX}` . - :param rowBorderType, columnBorderType: Border type to use. See :ocv:func:`borderInterpolate` for details. + :param rowBorderType: Pixel extrapolation method in the vertical direction. For details, see :ocv:func:`borderInterpolate`. + + :param columnBorderType: Pixel extrapolation method in the horizontal direction. .. seealso:: :ocv:func:`gpu::createSeparableLinearFilter_GPU`, :ocv:func:`createGaussianFilter` @@ -633,9 +652,13 @@ gpu::GaussianBlur :param ksize: Gaussian kernel size. ``ksize.width`` and ``ksize.height`` can differ but they both must be positive and odd. If they are zeros, they are computed from ``sigmaX`` and ``sigmaY`` . - :param sigmaX, sigmaY: Gaussian kernel standard deviations in X and Y direction. If ``sigmaY`` is zero, it is set to be equal to ``sigmaX`` . If they are both zeros, they are computed from ``ksize.width`` and ``ksize.height``, respectively. See :ocv:func:`getGaussianKernel` for details. To fully control the result regardless of possible future modification of all this semantics, you are recommended to specify all of ``ksize``, ``sigmaX``, and ``sigmaY`` . + :param sigmaX: Gaussian kernel standard deviation in X direction. + + :param sigmaY: Gaussian kernel standard deviation in Y direction. If ``sigmaY`` is zero, it is set to be equal to ``sigmaX`` . If they are both zeros, they are computed from ``ksize.width`` and ``ksize.height``, respectively. See :ocv:func:`getGaussianKernel` for details. To fully control the result regardless of possible future modification of all this semantics, you are recommended to specify all of ``ksize``, ``sigmaX``, and ``sigmaY`` . - :param rowBorderType, columnBorderType: Pixel extrapolation method. See :ocv:func:`borderInterpolate` for details. + :param rowBorderType: Pixel extrapolation method in the vertical direction. For details, see :ocv:func:`borderInterpolate`. + + :param columnBorderType: Pixel extrapolation method in the horizontal direction. .. seealso:: :ocv:func:`gpu::createGaussianFilter_GPU`, :ocv:func:`GaussianBlur` diff --git a/modules/gpu/doc/image_processing.rst b/modules/gpu/doc/image_processing.rst index c51077a70f..60c2e4d6f5 100644 --- a/modules/gpu/doc/image_processing.rst +++ b/modules/gpu/doc/image_processing.rst @@ -3,7 +3,7 @@ Image Processing .. highlight:: cpp -.. index:: gpu::meanShiftFiltering + gpu::meanShiftFiltering --------------------------- @@ -21,7 +21,7 @@ gpu::meanShiftFiltering :param criteria: Termination criteria. See :ocv:class:`TermCriteria`. -.. index:: gpu::meanShiftProc + gpu::meanShiftProc ---------------------- @@ -41,10 +41,8 @@ gpu::meanShiftProc :param criteria: Termination criteria. See :ocv:class:`TermCriteria`. -.. seealso:: - :ocv:func:`gpu::meanShiftFiltering` +.. seealso:: :ocv:func:`gpu::meanShiftFiltering` -.. index:: gpu::meanShiftSegmentation gpu::meanShiftSegmentation ------------------------------ @@ -64,7 +62,7 @@ gpu::meanShiftSegmentation :param criteria: Termination criteria. See :ocv:class:`TermCriteria`. -.. index:: gpu::integral + gpu::integral ----------------- @@ -80,10 +78,9 @@ gpu::integral :param sqsum: Squared integral image of the ``CV_32FC1`` type. -.. seealso:: - :ocv:func:`integral` +.. seealso:: :ocv:func:`integral` + -.. index:: gpu::sqrIntegral gpu::sqrIntegral -------------------- @@ -95,7 +92,7 @@ gpu::sqrIntegral :param sqsum: Squared integral image containing 64-bit unsigned integer values packed into ``CV_64FC1`` . -.. index:: gpu::columnSum + gpu::columnSum ------------------ @@ -107,7 +104,7 @@ gpu::columnSum :param sum: Destination image of the ``CV_32FC1`` type. -.. index:: gpu::cornerHarris + gpu::cornerHarris --------------------- @@ -127,10 +124,8 @@ gpu::cornerHarris :param borderType: Pixel extrapolation method. Only ``BORDER_REFLECT101`` and ``BORDER_REPLICATE`` are supported for now. -.. seealso:: - :ocv:func:`cornerHarris` +.. seealso:: :ocv:func:`cornerHarris` -.. index:: gpu::cornerMinEigenVal gpu::cornerMinEigenVal -------------------------- @@ -152,7 +147,7 @@ gpu::cornerMinEigenVal .. seealso:: :ocv:func:`cornerMinEigenVal` -.. index:: gpu::mulSpectrums + gpu::mulSpectrums --------------------- @@ -172,10 +167,8 @@ gpu::mulSpectrums Only full (not packed) ``CV_32FC2`` complex spectrums in the interleaved format are supported for now. -.. seealso:: - :ocv:func:`mulSpectrums` +.. seealso:: :ocv:func:`mulSpectrums` -.. index:: gpu::mulAndScaleSpectrums gpu::mulAndScaleSpectrums ----------------------------- @@ -197,10 +190,9 @@ gpu::mulAndScaleSpectrums Only full (not packed) ``CV_32FC2`` complex spectrums in the interleaved format are supported for now. -.. seealso:: - :ocv:func:`mulSpectrums` +.. seealso:: :ocv:func:`mulSpectrums` + -.. index:: gpu::dft gpu::dft ------------ @@ -236,10 +228,9 @@ gpu::dft * If the source matrix is real (its type is ``CV_32FC1`` ), forward DFT is performed. The result of the DFT is packed into complex ( ``CV_32FC2`` ) matrix. So, the width of the destination matrix is ``dft_size.width / 2 + 1`` . But if the source is a single column, the height is reduced instead of the width. -.. seealso:: - :ocv:func:`dft` +.. seealso:: :ocv:func:`dft` + -.. index:: gpu::convolve gpu::convolve ----------------- @@ -259,7 +250,7 @@ gpu::convolve :param buf: Optional buffer to avoid extra memory allocations (for many calls with the same sizes). -.. index:: gpu::ConvolveBuf + gpu::ConvolveBuf ---------------- @@ -280,7 +271,7 @@ Class providing a memory buffer for the :ocv:func:`gpu::convolve` function. }; -.. index:: gpu::ConvolveBuf::ConvolveBuf + gpu::ConvolveBuf::ConvolveBuf --------------------------------- @@ -294,7 +285,7 @@ gpu::ConvolveBuf::ConvolveBuf Constructs a buffer for the :ocv:func:`convolve` function with respective arguments. -.. index:: gpu::matchTemplate + gpu::matchTemplate ---------------------- @@ -324,10 +315,8 @@ gpu::matchTemplate * ``CV_TM_SQDIFF`` * ``CV_TM_CCORR`` -.. seealso:: - :ocv:func:`matchTemplate` +.. seealso:: :ocv:func:`matchTemplate` -.. index:: gpu::remap gpu::remap -------------- @@ -351,10 +340,8 @@ The function transforms the source image using the specified map: Values of pixels with non-integer coordinates are computed using the bilinear interpolation. -.. seealso:: - :ocv:func:`remap` +.. seealso:: :ocv:func:`remap` -.. index:: gpu::cvtColor gpu::cvtColor ----------------- @@ -376,10 +363,9 @@ gpu::cvtColor 3-channel color spaces (like ``HSV``, ``XYZ``, and so on) can be stored in a 4-channel image for better perfomance. -.. seealso:: - :ocv:func:`cvtColor` +.. seealso:: :ocv:func:`cvtColor` + -.. index:: gpu::threshold gpu::threshold ------------------ @@ -401,10 +387,9 @@ gpu::threshold :param stream: Stream for the asynchronous version. -.. seealso:: - :ocv:func:`threshold` +.. seealso:: :ocv:func:`threshold` + -.. index:: gpu::resize gpu::resize --------------- @@ -439,7 +424,7 @@ gpu::resize .. seealso:: :ocv:func:`resize` -.. index:: gpu::warpAffine + gpu::warpAffine ------------------- @@ -457,10 +442,9 @@ gpu::warpAffine :param flags: Combination of interpolation methods (see :ocv:func:`resize`) and the optional flag ``WARP_INVERSE_MAP`` specifying that ``M`` is an inverse transformation (``dst=>src``). Only ``INTER_NEAREST``, ``INTER_LINEAR``, and ``INTER_CUBIC`` interpolation methods are supported. -.. seealso:: - :ocv:func:`warpAffine` +.. seealso:: :ocv:func:`warpAffine` + -.. index:: gpu::warpPerspective gpu::warpPerspective ------------------------ @@ -478,10 +462,9 @@ gpu::warpPerspective :param flags: Combination of interpolation methods (see :ocv:func:`resize` ) and the optional flag ``WARP_INVERSE_MAP`` specifying that ``M`` is the inverse transformation (``dst => src``). Only ``INTER_NEAREST``, ``INTER_LINEAR``, and ``INTER_CUBIC`` interpolation methods are supported. -.. seealso:: - :ocv:func:`warpPerspective` +.. seealso:: :ocv:func:`warpPerspective` + -.. index:: gpu::rotate gpu::rotate --------------- @@ -503,10 +486,9 @@ gpu::rotate :param interpolation: Interpolation method. Only ``INTER_NEAREST``, ``INTER_LINEAR``, and ``INTER_CUBIC`` are supported. -.. seealso:: - :ocv:func:`gpu::warpAffine` +.. seealso:: :ocv:func:`gpu::warpAffine` + -.. index:: gpu::copyMakeBorder gpu::copyMakeBorder ----------------------- @@ -518,14 +500,18 @@ gpu::copyMakeBorder :param dst: Destination image with the same type as ``src``. The size is ``Size(src.cols+left+right, src.rows+top+bottom)`` . - :param top, bottom, left, right: Number of pixels in each direction from the source image rectangle to extrapolate. For example: ``top=1, bottom=1, left=1, right=1`` mean that 1 pixel-wide border needs to be built. + :param top: + + :param bottom: + + :param left: + + :param right: Number of pixels in each direction from the source image rectangle to extrapolate. For example: ``top=1, bottom=1, left=1, right=1`` mean that 1 pixel-wide border needs to be built. :param value: Border value. -.. seealso:: - :ocv:func:`copyMakeBorder` +.. seealso:: :ocv:func:`copyMakeBorder` -.. index:: gpu::rectStdDev gpu::rectStdDev ------------------- @@ -541,7 +527,7 @@ gpu::rectStdDev :param rect: Rectangular window. -.. index:: gpu::evenLevels + gpu::evenLevels ------------------- @@ -557,13 +543,11 @@ gpu::evenLevels :param upperLevel: Upper boundary value of the greatest level. -.. index:: gpu::histEven - gpu::histEven ----------------- .. ocv:function:: void gpu::histEven(const GpuMat& src, GpuMat& hist, int histSize, int lowerLevel, int upperLevel) -.. ocv:function:: void gpu::histEven(const GpuMat& src, GpuMat hist[4], int histSize[4], int lowerLevel[4], int upperLevel[4]) +.. ocv:function:: void gpu::histEven(const GpuMat& src, GpuMat* hist, int* histSize, int* lowerLevel, int* upperLevel) Calculates a histogram with evenly distributed bins. @@ -577,13 +561,11 @@ gpu::histEven :param upperLevel: Upper boundary of highest-level bin. -.. index:: gpu::histRange - gpu::histRange ------------------ .. ocv:function:: void gpu::histRange(const GpuMat& src, GpuMat& hist, const GpuMat& levels) -.. ocv:function:: void gpu::histRange(const GpuMat& src, GpuMat hist[4], const GpuMat levels[4]) +.. ocv:function:: void gpu::histRange(const GpuMat& src, GpuMat* hist, const GpuMat* levels) Calculates a histogram with bins determined by the ``levels`` array. diff --git a/modules/imgproc/doc/feature_detection.rst b/modules/imgproc/doc/feature_detection.rst index d1ef5b95c6..accbdb172a 100644 --- a/modules/imgproc/doc/feature_detection.rst +++ b/modules/imgproc/doc/feature_detection.rst @@ -77,10 +77,11 @@ After that it finds eigenvectors and eigenvalues of The output of the function can be used for robust edge or corner detection. -See Also: -:ocv:func:`cornerMinEigenVal`, -:ocv:func:`cornerHarris`, -:ocv:func:`preCornerDetect` +.. seealso:: + + :ocv:func:`cornerMinEigenVal`, + :ocv:func:`cornerHarris`, + :ocv:func:`preCornerDetect` @@ -221,7 +222,8 @@ Determines strong corners on an image. .. ocv:pyfunction:: cv2.goodFeaturesToTrack(image, maxCorners, qualityLevel, minDistance[, corners[, mask[, blockSize[, useHarrisDetector[, k]]]]]) -> corners -.. ocv:cfunction:: void cvGoodFeaturesToTrack( const CvArr* image CvArr* eigImage, CvArr* tempImage CvPoint2D32f* corners int* cornerCount double qualityLevel double minDistance const CvArr* mask=NULL int blockSize=3 int useHarris=0 double k=0.04 ) +.. ocv:cfunction:: void cvGoodFeaturesToTrack( const CvArr* image, CvArr* eigImage, CvArr* tempImage CvPoint2D32f* corners, int* cornerCount, double qualityLevel, double minDistance, const CvArr* mask=NULL, int blockSize=3, int useHarris=0, double k=0.04 ) + .. ocv:pyoldfunction:: cv.GoodFeaturesToTrack(image, eigImage, tempImage, cornerCount, qualityLevel, minDistance, mask=None, blockSize=3, useHarris=0, k=0.04)-> corners :param image: Input 8-bit or floating-point 32-bit, single-channel image. @@ -266,12 +268,14 @@ The function can be used to initialize a point-based tracker of an object. **Note**: If the function is called with different values ``A`` and ``B`` of the parameter ``qualityLevel`` , and ``A`` > {B}, the vector of returned corners with ``qualityLevel=A`` will be the prefix of the output vector with ``qualityLevel=B`` . -See Also: :ocv:func:`cornerMinEigenVal`, -:ocv:func:`cornerHarris`, -:ocv:func:`calcOpticalFlowPyrLK`, -:ocv:func:`estimateRigidMotion`, -:ocv:func:`PlanarObjectDetector`, -:ocv:func:`OneWayDescriptor` +.. seealso:: + + :ocv:func:`cornerMinEigenVal`, + :ocv:func:`cornerHarris`, + :ocv:func:`calcOpticalFlowPyrLK`, + :ocv:func:`estimateRigidMotion`, + :ocv:func:`PlanarObjectDetector`, + :ocv:func:`OneWayDescriptor` @@ -336,10 +340,10 @@ The function finds circles in a grayscale image using a modification of the Houg **Note**: Usually the function detects the centers of circles well. However, it may fail to find correct radii. You can assist to the function by specifying the radius range ( ``minRadius`` and ``maxRadius`` ) if you know it. Or, you may ignore the returned radius, use only the center, and find the correct radius using an additional procedure. -See Also: -:ocv:func:`fitEllipse`, -:ocv:func:`minEnclosingCircle` +.. seealso:: + :ocv:func:`fitEllipse`, + :ocv:func:`minEnclosingCircle` HoughLines diff --git a/modules/imgproc/doc/filtering.rst b/modules/imgproc/doc/filtering.rst index 69879c4cfd..e23b527dc9 100644 --- a/modules/imgproc/doc/filtering.rst +++ b/modules/imgproc/doc/filtering.rst @@ -54,6 +54,7 @@ where :ocv:func:`FilterEngine` constructor. While the filtering operation interface uses the ``uchar`` type, a particular implementation is not limited to 8-bit data. .. seealso:: + :ocv:func:`BaseRowFilter`, :ocv:func:`BaseFilter`, :ocv:func:`FilterEngine`, @@ -62,7 +63,6 @@ where :ocv:func:`getMorphologyColumnFilter` - BaseFilter ---------- .. ocv:class:: BaseFilter @@ -104,11 +104,12 @@ where :ocv:func:`FilterEngine` constructor. While the filtering operation interface uses the ``uchar`` type, a particular implementation is not limited to 8-bit data. .. seealso:: - :ocv:func:`BaseColumnFilter`, - :ocv:func:`BaseRowFilter`, - :ocv:func:`FilterEngine`, - :ocv:func:`getLinearFilter`, - :ocv:func:`getMorphologyFilter` + + :ocv:func:`BaseColumnFilter`, + :ocv:func:`BaseRowFilter`, + :ocv:func:`FilterEngine`, + :ocv:func:`getLinearFilter`, + :ocv:func:`getMorphologyFilter` @@ -145,12 +146,13 @@ where :ocv:func:`FilterEngine` constructor. While the filtering operation interface uses the ``uchar`` type, a particular implementation is not limited to 8-bit data. .. seealso:: - :ocv:func:`BaseColumnFilter`, - :ocv:func:`Filter`, - :ocv:func:`FilterEngine`, - :ocv:func:`getLinearRowFilter`, - :ocv:func:`getMorphologyRowFilter`, - :ocv:func:`getRowSumFilter` + + :ocv:func:`BaseColumnFilter`, + :ocv:func:`Filter`, + :ocv:func:`FilterEngine`, + :ocv:func:`getLinearRowFilter`, + :ocv:func:`getMorphologyRowFilter`, + :ocv:func:`getRowSumFilter` @@ -356,6 +358,7 @@ Explore the data types. As it was mentioned in the In case of non-separable filtering, ``bufType`` must be the same as ``srcType`` . The source data is copied to the temporary buffer, if needed, and then just passed to ``FilterEngine::filter2D`` . That is, the input type for ``filter2D`` is ``srcType`` (= ``bufType`` ) and the output type is ``dstType`` . .. seealso:: + :ocv:func:`BaseColumnFilter`, :ocv:func:`BaseFilter`, :ocv:func:`BaseRowFilter`, @@ -426,13 +429,13 @@ The function smoothes an image using the kernel: The call ``blur(src, dst, ksize, anchor, borderType)`` is equivalent to ``boxFilter(src, dst, src.type(), anchor, true, borderType)`` . .. seealso:: + :ocv:func:`boxFilter`, :ocv:func:`bilateralFilter`, :ocv:func:`GaussianBlur`, :ocv:func:`medianBlur` - borderInterpolate --------------------- Computes the source location of an extrapolated pixel. @@ -458,8 +461,9 @@ Normally, the function is not called directly. It is used inside :ocv:func:`copyMakeBorder` to compute tables for quick extrapolation. .. seealso:: - :ocv:func:`FilterEngine`, - :ocv:func:`copyMakeBorder` + + :ocv:func:`FilterEngine`, + :ocv:func:`copyMakeBorder` @@ -500,11 +504,12 @@ and so on). If you need to compute pixel sums over variable-size windows, use :ocv:func:`integral` . .. seealso:: - :ocv:func:`boxFilter`, - :ocv:func:`bilateralFilter`, - :ocv:func:`GaussianBlur`, - :ocv:func:`medianBlur`, - :ocv:func:`integral` + + :ocv:func:`boxFilter`, + :ocv:func:`bilateralFilter`, + :ocv:func:`GaussianBlur`, + :ocv:func:`medianBlur`, + :ocv:func:`integral` @@ -540,7 +545,13 @@ Forms a border around an image. :param dst: Destination image of the same type as ``src`` and the size ``Size(src.cols+left+right, src.rows+top+bottom)`` . - :param top, bottom, left, right: Parameter specifying how many pixels in each direction from the source image rectangle to extrapolate. For example, ``top=1, bottom=1, left=1, right=1`` mean that 1 pixel-wide border needs to be built. + :param top: + + :param bottom: + + :param left: + + :param right: Parameter specifying how many pixels in each direction from the source image rectangle to extrapolate. For example, ``top=1, bottom=1, left=1, right=1`` mean that 1 pixel-wide border needs to be built. :param borderType: Border type. See :ocv:func:`borderInterpolate` for details. @@ -567,7 +578,8 @@ The function supports the mode when ``src`` is already in the middle of ``dst`` .. seealso:: - :ocv:func:`borderInterpolate` + + :ocv:func:`borderInterpolate` createBoxFilter @@ -606,9 +618,10 @@ The function itself is used by :ocv:func:`boxFilter` . .. seealso:: - :ocv:func:`FilterEngine`, - :ocv:func:`blur`, - :ocv:func:`boxFilter` + + :ocv:func:`FilterEngine`, + :ocv:func:`blur`, + :ocv:func:`boxFilter` @@ -637,10 +650,11 @@ The function :ocv:func:`createDerivFilter` is a small convenience function that :ocv:func:`Scharr` . .. seealso:: - :ocv:func:`createSeparableLinearFilter`, - :ocv:func:`getDerivKernels`, - :ocv:func:`Scharr`, - :ocv:func:`Sobel` + + :ocv:func:`createSeparableLinearFilter`, + :ocv:func:`getDerivKernels`, + :ocv:func:`Scharr`, + :ocv:func:`Sobel` @@ -666,9 +680,10 @@ The function :ocv:func:`createGaussianFilter` computes Gaussian kernel coefficie :ocv:func:`createSeparableFilter` directly. .. seealso:: - :ocv:func:`createSeparableLinearFilter`, - :ocv:func:`getGaussianKernel`, - :ocv:func:`GaussianBlur` + + :ocv:func:`createSeparableLinearFilter`, + :ocv:func:`getGaussianKernel`, + :ocv:func:`GaussianBlur` @@ -692,7 +707,9 @@ Creates a non-separable linear filter engine. :param bits: Number of the fractional bits. the parameter is used when the kernel is an integer matrix representing fixed-point filter coefficients. - :param rowBorderType, columnBorderType: Pixel extrapolation methods in the horizontal and vertical directions. See :ocv:func:`borderInterpolate` for details. + :param rowBorderType: Pixel extrapolation method in the vertical direction. For details, see :ocv:func:`borderInterpolate`. + + :param columnBorderType: Pixel extrapolation method in the horizontal direction. :param borderValue: Border vaule used in case of a constant border. @@ -700,9 +717,10 @@ The function returns a pointer to a 2D linear filter for the specified kernel, t :ocv:func:`FilterEngine` constructor. .. seealso:: - :ocv:func:`createSeparableLinearFilter`, - :ocv:func:`FilterEngine`, - :ocv:func:`filter2D` + + :ocv:func:`createSeparableLinearFilter`, + :ocv:func:`FilterEngine`, + :ocv:func:`filter2D` createMorphologyFilter @@ -729,7 +747,9 @@ Creates an engine for non-separable morphological operations. :param anchor: Anchor position within the structuring element. Negative values mean that the anchor is at the kernel center. - :param rowBorderType, columnBorderType: Pixel extrapolation methods in the horizontal and vertical directions. See :ocv:func:`borderInterpolate` for details. + :param rowBorderType: Pixel extrapolation method in the vertical direction. For details, see :ocv:func:`borderInterpolate`. + + :param columnBorderType: Pixel extrapolation method in the horizontal direction. :param borderValue: Border value in case of a constant border. The default value, \ ``morphologyDefaultBorderValue`` , has a special meaning. It is transformed :math:`+\inf` for the erosion and to :math:`-\inf` for the dilation, which means that the minimum (maximum) is effectively computed only over the pixels that are inside the image. @@ -742,10 +762,11 @@ Note that :ocv:func:`createMorphologyFilter` analyzes the structuring element shape and builds a separable morphological filter engine when the structuring element is square. .. seealso:: - :ocv:func:`erode`, - :ocv:func:`dilate`, - :ocv:func:`morphologyEx`, - :ocv:func:`FilterEngine` + + :ocv:func:`erode`, + :ocv:func:`dilate`, + :ocv:func:`morphologyEx`, + :ocv:func:`FilterEngine` createSeparableLinearFilter @@ -774,7 +795,9 @@ Creates an engine for a separable linear filter. :param bits: Number of the fractional bits. The parameter is used when the kernel is an integer matrix representing fixed-point filter coefficients. - :param rowBorderType, columnBorderType: Pixel extrapolation methods in the horizontal and vertical directions. See :ocv:func:`borderInterpolate` for details. + :param rowBorderType: Pixel extrapolation method in the vertical direction. For details, see :ocv:func:`borderInterpolate`. + + :param columnBorderType: Pixel extrapolation method in the horizontal direction. :param borderValue: Border value used in case of a constant border. @@ -787,10 +810,11 @@ The functions construct primitive separable linear filtering operations or a fil :ocv:func:`FilterEngine` constructor. .. seealso:: - :ocv:func:`sepFilter2D`, - :ocv:func:`createLinearFilter`, - :ocv:func:`FilterEngine`, - :ocv:func:`getKernelType` + + :ocv:func:`sepFilter2D`, + :ocv:func:`createLinearFilter`, + :ocv:func:`FilterEngine`, + :ocv:func:`getKernelType` dilate @@ -827,9 +851,10 @@ The function dilates the source image using the specified structuring element th The function supports the in-place mode. Dilation can be applied several ( ``iterations`` ) times. In case of multi-channel images, each channel is processed independently. .. seealso:: - :ocv:func:`erode`, - :ocv:func:`morphologyEx`, - :ocv:func:`createMorphologyFilter` + + :ocv:func:`erode`, + :ocv:func:`morphologyEx`, + :ocv:func:`createMorphologyFilter` erode @@ -866,9 +891,10 @@ The function erodes the source image using the specified structuring element tha The function supports the in-place mode. Erosion can be applied several ( ``iterations`` ) times. In case of multi-channel images, each channel is processed independently. .. seealso:: - :ocv:func:`dilate`, - :ocv:func:`morphologyEx`, - :ocv:func:`createMorphologyFilter` + + :ocv:func:`dilate`, + :ocv:func:`morphologyEx`, + :ocv:func:`createMorphologyFilter` @@ -911,10 +937,11 @@ That is, the kernel is not mirrored around the anchor point. If you need a real The function uses the DFT-based algorithm in case of sufficiently large kernels (~``11 x 11`` or larger) and the direct algorithm (that uses the engine retrieved by :ocv:func:`createLinearFilter` ) for small kernels. .. seealso:: - :ocv:func:`sepFilter2D`, - :ocv:func:`createLinearFilter`, - :ocv:func:`dft`, - :ocv:func:`matchTemplate` + + :ocv:func:`sepFilter2D`, + :ocv:func:`createLinearFilter`, + :ocv:func:`dft`, + :ocv:func:`matchTemplate` @@ -932,13 +959,16 @@ Smoothes an image using a Gaussian filter. :param ksize: Gaussian kernel size. ``ksize.width`` and ``ksize.height`` can differ but they both must be positive and odd. Or, they can be zero's and then they are computed from ``sigma*`` . - :param sigmaX, sigmaY: Gaussian kernel standard deviations in X and Y direction. If ``sigmaY`` is zero, it is set to be equal to ``sigmaX`` . If they are both zeros, they are computed from ``ksize.width`` and ``ksize.height`` , respectively. See :ocv:func:`getGaussianKernel` for details. To fully control the result regardless of possible future modifications of all this semantics, it is recommended to specify all of ``ksize`` , ``sigmaX`` , and ``sigmaY`` . + :param sigmaX: Gaussian kernel standard deviation in X direction. + + :param sigmaY: Gaussian kernel standard deviation in Y direction. If ``sigmaY`` is zero, it is set to be equal to ``sigmaX`` . If both sigmas are zeros, they are computed from ``ksize.width`` and ``ksize.height`` , respectively. See :ocv:func:`getGaussianKernel` for details. To fully control the result regardless of possible future modifications of all this semantics, it is recommended to specify all of ``ksize`` , ``sigmaX`` , and ``sigmaY`` . :param borderType: Pixel extrapolation method. See :ocv:func:`borderInterpolate` for details. The function convolves the source image with the specified Gaussian kernel. In-place filtering is supported. .. seealso:: + :ocv:func:`sepFilter2D`, :ocv:func:`filter2D`, :ocv:func:`blur`, @@ -1009,6 +1039,7 @@ Two of such generated kernels can be passed to :ocv:func:`GaussianBlur`. .. seealso:: + :ocv:func:`sepFilter2D`, :ocv:func:`createSeparableLinearFilter`, :ocv:func:`getDerivKernels`, @@ -1111,10 +1142,11 @@ The function smoothes an image using the median filter with the :math:`\texttt{ksize} \times \texttt{ksize}` aperture. Each channel of a multi-channel image is processed independently. In-place operation is supported. .. seealso:: - :ocv:func:`bilateralFilter`, - :ocv:func:`blur`, - :ocv:func:`boxFilter`, - :ocv:func:`GaussianBlur` + + :ocv:func:`bilateralFilter`, + :ocv:func:`blur`, + :ocv:func:`boxFilter`, + :ocv:func:`GaussianBlur` @@ -1188,9 +1220,10 @@ Morphological gradient: Any of the operations can be done in-place. .. seealso:: - :ocv:func:`dilate`, - :ocv:func:`erode`, - :ocv:func:`createMorphologyFilter` + + :ocv:func:`dilate`, + :ocv:func:`erode`, + :ocv:func:`createMorphologyFilter` @@ -1234,8 +1267,9 @@ This is done when ``ksize > 1`` . When ``ksize == 1`` , the Laplacian is compute \vecthreethree {0}{1}{0}{1}{-4}{1}{0}{1}{0} .. seealso:: - :ocv:func:`Sobel`, - :ocv:func:`Scharr` + + :ocv:func:`Sobel`, + :ocv:func:`Scharr` @@ -1370,6 +1404,7 @@ Applies a separable linear filter to an image. The function applies a separable linear filter to the image. That is, first, every row of ``src`` is filtered with the 1D kernel ``rowKernel`` . Then, every column of the result is filtered with the 1D kernel ``columnKernel`` . The final result shifted by ``delta`` is stored in ``dst`` . .. seealso:: + :ocv:func:`createSeparableLinearFilter`, :ocv:func:`filter2D`, :ocv:func:`Sobel`, @@ -1392,7 +1427,7 @@ Smooths the image in one of several ways. :param smoothtype: Type of the smoothing: - * **CV_BLUR_NO_SCALE** linear convolution with :math:`\texttt{param1}\times\texttt{param2}` box kernel (all 1's). If you want to smooth different pixels with different-size box kernels, you can use the integral image that is computed using :ref:`Integral` + * **CV_BLUR_NO_SCALE** linear convolution with :math:`\texttt{param1}\times\texttt{param2}` box kernel (all 1's). If you want to smooth different pixels with different-size box kernels, you can use the integral image that is computed using :ocv:func:`integral` * **CV_BLUR** linear convolution with :math:`\texttt{param1}\times\texttt{param2}` box kernel (all 1's) with subsequent scaling by :math:`1/(\texttt{param1}\cdot\texttt{param2})` @@ -1500,11 +1535,12 @@ The second case corresponds to a kernel of: \vecthreethree{-1}{-2}{-1}{0}{0}{0}{1}{2}{1} .. seealso:: - :ocv:func:`Scharr`, - :ocv:func:`Lapacian`, - :ocv:func:`sepFilter2D`, - :ocv:func:`filter2D`, - :ocv:func:`GaussianBlur` + + :ocv:func:`Scharr`, + :ocv:func:`Lapacian`, + :ocv:func:`sepFilter2D`, + :ocv:func:`filter2D`, + :ocv:func:`GaussianBlur` diff --git a/modules/imgproc/doc/geometric_transformations.rst b/modules/imgproc/doc/geometric_transformations.rst index d3045eff76..01f807b7f2 100644 --- a/modules/imgproc/doc/geometric_transformations.rst +++ b/modules/imgproc/doc/geometric_transformations.rst @@ -15,8 +15,8 @@ In case when you specify the forward mapping :math:`\left: \texttt{dst} \rightarrow \texttt{src}` and then use the above formula. The actual implementations of the geometrical transformations, from the most generic -:ref:`Remap` and to the simplest and the fastest -:ref:`Resize` , need to solve two main problems with the above formula: +:ocv:func:`remap` and to the simplest and the fastest +:ocv:func:`resize` , need to solve two main problems with the above formula: * Extrapolation of non-existing pixels. Similarly to the filtering functions described in the previous section, for some @@ -32,7 +32,7 @@ The actual implementations of the geometrical transformations, from the most gen , where a polynomial function is fit into some neighborhood of the computed pixel :math:`(f_x(x,y), f_y(x,y))` , and then the value of the polynomial at :math:`(f_x(x,y), f_y(x,y))` is taken as the interpolated pixel value. In OpenCV, you can choose between several interpolation methods. See - :ref:`Resize` for details. + :ocv:func:`resize` for details. convertMaps ----------- @@ -67,10 +67,11 @@ The function converts a pair of maps for * Reverse conversion. Obviously, the reconstructed floating-point maps will not be exactly the same as the originals. -See Also: -:ocv:func:`remap`, -:ocv:func:`undisort`, -:ocv:func:`initUndistortRectifyMap` +.. seealso:: + + :ocv:func:`remap`, + :ocv:func:`undisort`, + :ocv:func:`initUndistortRectifyMap` @@ -78,11 +79,12 @@ getAffineTransform ---------------------- Calculates an affine transform from three pairs of the corresponding points. -.. ocv:function:: Mat getAffineTransform( const Point2f src[], const Point2f dst[] ) +.. ocv:function:: Mat getAffineTransform( const Point2f* src, const Point2f* dst ) .. ocv:pyfunction:: cv2.getAffineTransform(src, dst) -> retval .. ocv:cfunction:: CvMat* cvGetAffineTransform( const CvPoint2D32f* src, const CvPoint2D32f* dst, CvMat* mapMatrix ) + .. ocv:pyoldfunction:: cv.GetAffineTransform(src, dst, mapMatrix)-> None :param src: Coordinates of triangle vertices in the source image. @@ -103,9 +105,10 @@ where src(i)=(x_i, y_i), i=0,1,2 -See Also: -:ocv:func:`warpAffine`, -:ocv:func:`transform` +.. seealso:: + + :ocv:func:`warpAffine`, + :ocv:func:`transform` @@ -113,11 +116,12 @@ getPerspectiveTransform --------------------------- Calculates a perspective transform from four pairs of the corresponding points. -.. ocv:function:: Mat getPerspectiveTransform( const Point2f src[], const Point2f dst[] ) +.. ocv:function:: Mat getPerspectiveTransform( const Point2f* src, const Point2f* dst ) .. ocv:pyfunction:: cv2.getPerspectiveTransform(src, dst) -> retval .. ocv:cfunction:: CvMat* cvGetPerspectiveTransform( const CvPoint2D32f* src, const CvPoint2D32f* dst, CvMat* mapMatrix ) + .. ocv:pyoldfunction:: cv.GetPerspectiveTransform(src, dst, mapMatrix)-> None :param src: Coordinates of quadrangle vertices in the source image. @@ -138,10 +142,11 @@ where src(i)=(x_i, y_i), i=0,1,2,3 -See Also: -:ocv:func:`findHomography`, -:ocv:func:`warpPerspective`, -:ocv:func:`perspectiveTransform` +.. seealso:: + + :ocv:func:`findHomography`, + :ocv:func:`warpPerspective`, + :ocv:func:`perspectiveTransform` getRectSubPix @@ -179,9 +184,10 @@ outside. In this case, the replication border mode (see :ocv:func:`borderInterpolate` ) is used to extrapolate the pixel values outside of the image. -See Also: -:ocv:func:`warpAffine`, -:ocv:func:`warpPerspective` +.. seealso:: + + :ocv:func:`warpAffine`, + :ocv:func:`warpPerspective` getRotationMatrix2D @@ -218,12 +224,11 @@ where The transformation maps the rotation center to itself. If this is not the target, adjust the shift. -See Also: -:ocv:func:`getAffineTransform`, -:ocv:func:`warpAffine`, -:ocv:func:`transform` - +.. seealso:: + :ocv:func:`getAffineTransform`, + :ocv:func:`warpAffine`, + :ocv:func:`transform` @@ -269,21 +274,22 @@ Remaps an image to log-polar space. :param flags: A combination of interpolation methods and the following optional flags: - * **CV_WARP_FILL_OUTLIERS** fills all of the destination image pixels. If some of them correspond to outliers in the source image, they are set to zero - + * **CV_WARP_FILL_OUTLIERS** fills all of the destination image pixels. If some of them correspond to outliers in the source image, they are set to zero - * **CV_WARP_INVERSE_MAP** See below + * **CV_WARP_INVERSE_MAP** See below The function ``cvLogPolar`` transforms the source image using the following transformation: - * Forward transformation (``CV_WARP_INVERSE_MAP``is not set): + * + Forward transformation (``CV_WARP_INVERSE_MAP``is not set): .. math:: dst( \phi , \rho ) = src(x,y) - * Inverse transformation (``CV_WARP_INVERSE_MAP`` is set): + * + Inverse transformation (``CV_WARP_INVERSE_MAP`` is set): .. math:: @@ -409,12 +415,11 @@ If you want to decimate the image by factor of 2 in each direction, you can call To shrink an image, it will generally look best with CV_INTER_AREA interpolation, whereas to enlarge an image, it will generally look best with CV_INTER_CUBIC (slow) or CV_INTER_LINEAR (faster but still looks OK). -See Also: -:ocv:func:`warpAffine`, -:ocv:func:`warpPerspective`, -:ocv:func:`remap` - +.. seealso:: + :ocv:func:`warpAffine`, + :ocv:func:`warpPerspective`, + :ocv:func:`remap` warpAffine @@ -455,12 +460,13 @@ when the flag ``WARP_INVERSE_MAP`` is set. Otherwise, the transformation is firs :ocv:func:`invertAffineTransform` and then put in the formula above instead of ``M`` . The function cannot operate in-place. -See Also: -:ocv:func:`warpPerspective`, -:ocv:func:`resize`, -:ocv:func:`remap`, -:ocv:func:`getRectSubPix`, -:ocv:func:`transform` +.. seealso:: + + :ocv:func:`warpPerspective`, + :ocv:func:`resize`, + :ocv:func:`remap`, + :ocv:func:`getRectSubPix`, + :ocv:func:`transform` .. note:: ``cvGetQuadrangleSubPix`` is similar to ``cvWarpAffine``, but the outliers are extrapolated using replication border mode. @@ -501,12 +507,13 @@ when the flag ``WARP_INVERSE_MAP`` is set. Otherwise, the transformation is firs :ocv:func:`invert` and then put in the formula above instead of ``M`` . The function cannot operate in-place. -See Also: -:ocv:func:`warpAffine`, -:ocv:func:`resize`, -:ocv:func:`remap`, -:ocv:func:`getRectSubPix`, -:ocv:func:`perspectiveTransform` +.. seealso:: + + :ocv:func:`warpAffine`, + :ocv:func:`resize`, + :ocv:func:`remap`, + :ocv:func:`getRectSubPix`, + :ocv:func:`perspectiveTransform` @@ -529,27 +536,27 @@ Computes the undistortion and rectification transformation map. :param distCoeffs: Input vector of distortion coefficients :math:`(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6]])` of 4, 5, or 8 elements. If the vector is NULL/empty, the zero distortion coefficients are assumed. - :param R: Optional rectification transformation in the object space (3x3 matrix). ``R1`` or ``R2`` , computed by :ref:`StereoRectify` can be passed here. If the matrix is empty, the identity transformation is assumed. In ``cvInitUndistortMap`` R assumed to be an identity matrix. + :param R: Optional rectification transformation in the object space (3x3 matrix). ``R1`` or ``R2`` , computed by :ocv:func:`stereoRectify` can be passed here. If the matrix is empty, the identity transformation is assumed. In ``cvInitUndistortMap`` R assumed to be an identity matrix. :param newCameraMatrix: New camera matrix :math:`A'=\vecthreethree{f_x'}{0}{c_x'}{0}{f_y'}{c_y'}{0}{0}{1}` . :param size: Undistorted image size. - :param m1type: Type of the first output map that can be ``CV_32FC1`` or ``CV_16SC2`` . See :ref:`convertMaps` for details. + :param m1type: Type of the first output map that can be ``CV_32FC1`` or ``CV_16SC2`` . See :ocv:func:`convertMaps` for details. :param map1: The first output map. :param map2: The second output map. The function computes the joint undistortion and rectification transformation and represents the result in the form of maps for -:ref:`Remap` . The undistorted image looks like original, as if it is captured with a camera using the camera matrix ``=newCameraMatrix`` and zero distortion. In case of a monocular camera, ``newCameraMatrix`` is usually equal to ``cameraMatrix`` , or it can be computed by -:ref:`GetOptimalNewCameraMatrix` for a better control over scaling. In case of a stereo camera, ``newCameraMatrix`` is normally set to ``P1`` or ``P2`` computed by -:ref:`StereoRectify` . +:ocv:func:`remap` . The undistorted image looks like original, as if it is captured with a camera using the camera matrix ``=newCameraMatrix`` and zero distortion. In case of a monocular camera, ``newCameraMatrix`` is usually equal to ``cameraMatrix`` , or it can be computed by +:ocv:func:`getOptimalNewCameraMatrix` for a better control over scaling. In case of a stereo camera, ``newCameraMatrix`` is normally set to ``P1`` or ``P2`` computed by +:ocv:func:`stereoRectify` . Also, this new camera is oriented differently in the coordinate space, according to ``R`` . That, for example, helps to align two heads of a stereo camera so that the epipolar lines on both images become horizontal and have the same y- coordinate (in case of a horizontally aligned stereo camera). The function actually builds the maps for the inverse mapping algorithm that is used by -:ref:`Remap` . That is, for each pixel +:ocv:func:`remap` . That is, for each pixel :math:`(u, v)` in the destination (corrected and rectified) image, the function computes the corresponding coordinates in the source image (that is, in the original image from camera). The following process is applied: .. math:: @@ -560,9 +567,9 @@ where :math:`(k_1, k_2, p_1, p_2[, k_3])` are the distortion coefficients. In case of a stereo camera, this function is called twice: once for each camera head, after -:ref:`StereoRectify` , which in its turn is called after -:ref:`StereoCalibrate` . But if the stereo camera was not calibrated, it is still possible to compute the rectification transformations directly from the fundamental matrix using -:ref:`StereoRectifyUncalibrated` . For each camera, the function computes homography ``H`` as the rectification transformation in a pixel domain, not a rotation matrix ``R`` in 3D space. ``R`` can be computed from ``H`` as +:ocv:func:`stereoRectify` , which in its turn is called after +:ocv:func:`stereoCalibrate` . But if the stereo camera was not calibrated, it is still possible to compute the rectification transformations directly from the fundamental matrix using +:ocv:func:`stereoRectifyUncalibrated` . For each camera, the function computes homography ``H`` as the rectification transformation in a pixel domain, not a rotation matrix ``R`` in 3D space. ``R`` can be computed from ``H`` as .. math:: @@ -587,7 +594,7 @@ Returns the default new camera matrix. :param centerPrincipalPoint: Location of the principal point in the new camera matrix. The parameter indicates whether this location should be at the image center or not. -The function returns the camera matrix that is either an exact copy of the input ``cameraMatrix`` (when ``centerPrinicipalPoint=false`` ), or the modified one (when ``centerPrincipalPoint`` =true). +The function returns the camera matrix that is either an exact copy of the input ``cameraMatrix`` (when ``centerPrinicipalPoint=false`` ), or the modified one (when ``centerPrincipalPoint=true``). In the latter case, the new camera matrix will be: @@ -602,8 +609,8 @@ where :math:`(1,1)` elements of ``cameraMatrix`` , respectively. By default, the undistortion functions in OpenCV (see -:ref:`initUndistortRectifyMap`, -:ref:`undistort`) do not move the principal point. However, when you work with stereo, it is important to move the principal points in both views to the same y-coordinate (which is required by most of stereo correspondence algorithms), and may be to the same x-coordinate too. So, you can form the new camera matrix for each view where the principal points are located at the center. +:ocv:func:`initUndistortRectifyMap`, +:ocv:func:`undistort`) do not move the principal point. However, when you work with stereo, it is important to move the principal points in both views to the same y-coordinate (which is required by most of stereo correspondence algorithms), and may be to the same x-coordinate too. So, you can form the new camera matrix for each view where the principal points are located at the center. @@ -639,10 +646,10 @@ The function is simply a combination of Those pixels in the destination image, for which there is no correspondent pixels in the source image, are filled with zeros (black color). A particular subset of the source image that will be visible in the corrected image can be regulated by ``newCameraMatrix`` . You can use -:ref:`GetOptimalNewCameraMatrix` to compute the appropriate ``newCameraMatrix`` depending on your requirements. +:ocv:func:`getOptimalNewCameraMatrix` to compute the appropriate ``newCameraMatrix`` depending on your requirements. The camera matrix and the distortion parameters can be determined using -:ref:`calibrateCamera` . If the resolution of images is different from the resolution used at the calibration stage, +:ocv:func:`calibrateCamera` . If the resolution of images is different from the resolution used at the calibration stage, :math:`f_x, f_y, c_x` and :math:`c_y` need to be scaled accordingly, while the distortion coefficients remain the same. @@ -666,14 +673,14 @@ Computes the ideal point coordinates from the observed point coordinates. :param distCoeffs: Input vector of distortion coefficients :math:`(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6]])` of 4, 5, or 8 elements. If the vector is NULL/empty, the zero distortion coefficients are assumed. - :param R: Rectification transformation in the object space (3x3 matrix). ``R1`` or ``R2`` computed by :ref:`StereoRectify` can be passed here. If the matrix is empty, the identity transformation is used. + :param R: Rectification transformation in the object space (3x3 matrix). ``R1`` or ``R2`` computed by :ocv:func:`stereoRectify` can be passed here. If the matrix is empty, the identity transformation is used. - :param P: New camera matrix (3x3) or new projection matrix (3x4). ``P1`` or ``P2`` computed by :ref:`StereoRectify` can be passed here. If the matrix is empty, the identity new camera matrix is used. + :param P: New camera matrix (3x3) or new projection matrix (3x4). ``P1`` or ``P2`` computed by :ocv:func:`stereoRectify` can be passed here. If the matrix is empty, the identity new camera matrix is used. The function is similar to -:ref:`undistort` and -:ref:`initUndistortRectifyMap` but it operates on a sparse set of points instead of a raster image. Also the function performs a reverse transformation to -:ref:`projectPoints` . In case of a 3D object, it does not reconstruct its 3D coordinates, but for a planar object, it does, up to a translation vector, if the proper ``R`` is specified. :: +:ocv:func:`undistort` and +:ocv:func:`initUndistortRectifyMap` but it operates on a sparse set of points instead of a raster image. Also the function performs a reverse transformation to +:ocv:func:`projectPoints` . In case of a 3D object, it does not reconstruct its 3D coordinates, but for a planar object, it does, up to a translation vector, if the proper ``R`` is specified. :: // (u,v) is the input point, (u', v') is the output point // camera_matrix=[fx 0 cx; 0 fy cy; 0 0 1] diff --git a/modules/imgproc/doc/histograms.rst b/modules/imgproc/doc/histograms.rst index db1d56c1e9..a6dea452d7 100644 --- a/modules/imgproc/doc/histograms.rst +++ b/modules/imgproc/doc/histograms.rst @@ -145,9 +145,7 @@ The functions ``calcBackProject`` calculate the back project of the histogram. T This is an approximate algorithm of the :ocv:func:`CAMShift` color object tracker. -See Also: -:ocv:func:`calcHist` - +.. seealso:: :ocv:func:`calcHist` .. _compareHist: compareHist @@ -312,7 +310,7 @@ Locates a template within an image by using a histogram comparison. :param hist: Histogram - :param method: Comparison method, passed to :ref:`CompareHist` (see description of that function) + :param method: Comparison method, passed to :ocv:cfunc:`CompareHist` (see description of that function) :param factor: Normalization factor for histograms, will affect the normalization scale of the destination image, pass 1 if unsure @@ -420,7 +418,11 @@ Returns a pointer to the histogram bin. :param hist: Histogram - :param idx0, idx1, idx2, idx3: Indices of the bin + :param idx0: 0-th index + + :param idx1: 1-st index + + :param idx2: 2-nd index :param idx: Array of indices @@ -475,9 +477,9 @@ Makes a histogram out of an array. :param data: Array that will be used to store histogram bins - :param ranges: Histogram bin ranges, see :ref:`CreateHist` + :param ranges: Histogram bin ranges, see :ocv:cfunc:`CreateHist` - :param uniform: Uniformity flag, see :ref:`CreateHist` + :param uniform: Uniformity flag, see :ocv:cfunc:`CreateHist` The function initializes the histogram, whose header and bins are allocated by the user. :ocv:cfunc:`ReleaseHist` does not need to be called afterwards. Only dense histograms can be initialized this way. The function returns ``hist``. @@ -511,7 +513,11 @@ Queries the value of the histogram bin. :param hist: Histogram - :param idx0, idx1, idx2, idx3: Indices of the bin + :param idx0: 0-th index + + :param idx1: 1-st index + + :param idx2: 2-nd index :param idx: Array of indices @@ -536,9 +542,9 @@ Sets the bounds of the histogram bins. :param hist: Histogram - :param ranges: Array of bin ranges arrays, see :ref:`CreateHist` + :param ranges: Array of bin ranges arrays, see :ocv:cfunc:`CreateHist` - :param uniform: Uniformity flag, see :ref:`CreateHist` + :param uniform: Uniformity flag, see :ocv:cfunc:`CreateHist` The function is a stand-alone function for setting bin ranges in the histogram. For a more detailed description of the parameters ``ranges`` and ``uniform`` see the :ocv:cfunc:`CalcHist` function, that can initialize the ranges as well. Ranges for the histogram bins must be set before the histogram is calculated or the backproject of the histogram is calculated. @@ -581,5 +587,4 @@ between the calculated minimum and maximum distances are incremented .. [RubnerSept98] Y. Rubner. C. Tomasi, L.J. Guibas. The Earth Mover’s Distance as a Metric for Image Retrieval. Technical Report STAN-CS-TN-98-86, Department of Computer Science, Stanford University, September 1998. -.. [Iivarinen97] Jukka Iivarinen, Markus Peura, Jaakko Srel, and Ari Visa. Comparison of Combined Shape Descriptors for Irregular Objects, 8th British Machine Vision Conference, BMVC'97. -http://www.cis.hut.fi/research/IA/paper/publications/bmvc97/bmvc97.html \ No newline at end of file +.. [Iivarinen97] Jukka Iivarinen, Markus Peura, Jaakko Srel, and Ari Visa. Comparison of Combined Shape Descriptors for Irregular Objects, 8th British Machine Vision Conference, BMVC'97. http://www.cis.hut.fi/research/IA/paper/publications/bmvc97/bmvc97.html \ No newline at end of file diff --git a/modules/imgproc/doc/miscellaneous_transformations.rst b/modules/imgproc/doc/miscellaneous_transformations.rst index fdf0fc0e02..702fdb60ce 100644 --- a/modules/imgproc/doc/miscellaneous_transformations.rst +++ b/modules/imgproc/doc/miscellaneous_transformations.rst @@ -60,10 +60,11 @@ where The function can process the image in-place. -See Also: -:ocv:func:`threshold`, -:ocv:func:`blur`, -:ocv:func:`GaussianBlur` +.. seealso:: + + :ocv:func:`threshold`, + :ocv:func:`blur`, + :ocv:func:`GaussianBlur` @@ -579,10 +580,7 @@ where Use these functions to either mark a connected component with the specified color in-place, or build a mask and then extract the contour, or copy the region to another image, and so on. Various modes of the function are demonstrated in the ``floodfill.cpp`` sample. -See Also: -:ocv:func:`findContours` - - +.. seealso:: :ocv:func:`findContours` @@ -743,13 +741,13 @@ Currently, Otsu's method is implemented only for 8-bit images. .. image:: pics/threshold.png -See Also: -:ocv:func:`adaptiveThreshold`, -:ocv:func:`findContours`, -:ocv:func:`compare`, -:ocv:func:`min`, -:ocv:func:`max` +.. seealso:: + :ocv:func:`adaptiveThreshold`, + :ocv:func:`findContours`, + :ocv:func:`compare`, + :ocv:func:`min`, + :ocv:func:`max` watershed @@ -787,9 +785,7 @@ example, when such tangent components exist in the initial marker image. Visual demonstration and usage example of the function can be found in the OpenCV samples directory (see the ``watershed.cpp`` demo). -See Also: -:ocv:func:`findContours` - +.. seealso:: :ocv:func:`findContours` grabCut @@ -814,7 +810,9 @@ Runs the GrabCut algorithm. :param rect: ROI containing a segmented object. The pixels outside of the ROI are marked as "obvious background". The parameter is only used when ``mode==GC_INIT_WITH_RECT`` . - :param bgdModel, fgdModel: Temporary arrays used for segmentation. Do not modify them while you are processing the same image. + :param bgdModel: Temporary array for the background model. Do not modify it while you are processing the same image. + + :param fgdModel: Temporary arrays for the foreground model. Do not modify it while you are processing the same image. :param iterCount: Number of iterations the algorithm should make before returning the result. Note that the result can be refined with further calls with ``mode==GC_INIT_WITH_MASK`` or ``mode==GC_EVAL`` . diff --git a/modules/imgproc/doc/planar_subdivisions.rst b/modules/imgproc/doc/planar_subdivisions.rst index d6995e5dda..b7b3711730 100644 --- a/modules/imgproc/doc/planar_subdivisions.rst +++ b/modules/imgproc/doc/planar_subdivisions.rst @@ -137,7 +137,7 @@ ClearSubdivVoronoi2D The function removes all of the virtual points. It is called internally in -:ref:`CalcSubdivVoronoi2D` +:ocv:cfunc:`CalcSubdivVoronoi2D` if the subdivision was modified after previous call to the function. @@ -154,7 +154,7 @@ Creates an empty Delaunay triangulation. The function creates an empty Delaunay subdivision, where 2d points can be added using the function -:ref:`SubdivDelaunay2DInsert` +:ocv:cfunc:`SubdivDelaunay2DInsert` . All of the points to be added must be within the specified rectangle, otherwise a runtime error will be raised. @@ -177,7 +177,7 @@ The function is another function that locates the input point within the subdivision. It finds the subdivision vertex that is the closest to the input point. It is not necessarily one of vertices of the facet containing the input point, though the facet (located using -:ref:`Subdiv2DLocate` +:ocv:cfunc:`Subdiv2DLocate` ) is used as a starting point. The function returns a pointer to the found subdivision vertex. @@ -194,8 +194,7 @@ The function returns the edge destination. The returned pointer may be NULL if the edge is from dual subdivision and the virtual point coordinates are not calculated yet. The virtual points can be calculated using the function -:ref:`CalcSubdivVoronoi2D` -. +:ocv:cfunc:`CalcSubdivVoronoi2D`. Subdiv2DGetEdge --------------- @@ -319,7 +318,7 @@ Inserts a single point into a Delaunay triangulation. .. ocv:cfunction:: CvSubdiv2DPoint* cvSubdivDelaunay2DInsert( CvSubdiv2D* subdiv, CvPoint2D32f pt) .. ocv:pyoldfunction:: cv.SubdivDelaunay2DInsert(subdiv, pt)-> point - :param subdiv: Delaunay subdivision created by the function :ref:`CreateSubdivDelaunay2D` + :param subdiv: Delaunay subdivision created by the function :ocv:cfunc:`CreateSubdivDelaunay2D` :param pt: Inserted point diff --git a/modules/imgproc/doc/structural_analysis_and_shape_descriptors.rst b/modules/imgproc/doc/structural_analysis_and_shape_descriptors.rst index 33b2fbbac2..4f62d31f23 100644 --- a/modules/imgproc/doc/structural_analysis_and_shape_descriptors.rst +++ b/modules/imgproc/doc/structural_analysis_and_shape_descriptors.rst @@ -71,9 +71,10 @@ The moments of a contour are defined in the same way but computed using Green's http://en.wikipedia.org/wiki/Green_theorem ). So, due to a limited raster resolution, the moments computed for a contour are slightly different from the moments computed for the same rasterized contour. -See Also: -:ocv:func:`contourArea`, -:ocv:func:`arcLength` +.. seealso:: + + :ocv:func:`contourArea`, + :ocv:func:`arcLength` @@ -81,7 +82,7 @@ HuMoments ------------- Calculates the seven Hu invariants. -.. ocv:function:: void HuMoments( const Moments& moments, double h[7] ) +.. ocv:function:: void HuMoments( const Moments& moments, double* hu ) .. ocv:pyfunction:: cv2.HuMoments(m) -> hu @@ -90,14 +91,14 @@ Calculates the seven Hu invariants. .. ocv:pyoldfunction:: cv.GetHuMoments(moments) -> hu :param moments: Input moments computed with :ocv:func:`moments` . - :param h: Output Hu invariants. + :param hu: Output Hu invariants. The function calculates the seven Hu invariants (introduced in [Hu62]_; see also http://en.wikipedia.org/wiki/Image_moment) defined as: .. math:: - \begin{array}{l} h[0]= \eta _{20}+ \eta _{02} \\ h[1]=( \eta _{20}- \eta _{02})^{2}+4 \eta _{11}^{2} \\ h[2]=( \eta _{30}-3 \eta _{12})^{2}+ (3 \eta _{21}- \eta _{03})^{2} \\ h[3]=( \eta _{30}+ \eta _{12})^{2}+ ( \eta _{21}+ \eta _{03})^{2} \\ h[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}] \\ h[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}) \\ h[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} + \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 :math:`\eta_{ji}` stands for @@ -105,8 +106,7 @@ where 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. -See Also: -:ocv:func:`matchShapes` +.. seealso:: :ocv:func:`matchShapes` findContours @@ -280,7 +280,7 @@ Approximates Freeman chain(s) with a polygonal curve. :param storage: Storage location for the resulting polylines - :param method: Approximation method (see the description of the function :ref:`FindContours` ) + :param method: Approximation method (see the description of the function :ocv:cfunc:`FindContours` ) :param parameter: Method parameter (not used now) @@ -463,7 +463,9 @@ Fits a line to a 2D or 3D point set. :param param: Numerical parameter ( ``C`` ) for some types of distances. If it is 0, an optimal value is chosen. - :param reps, aeps: Sufficient accuracy for the radius (distance between the coordinate origin and the line) and angle, respectively. 0.01 would be a good default value for both. + :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``. The function ``fitLine`` fits a line to a 2D or 3D point set by minimizing :math:`\sum_i \rho(r_i)` where diff --git a/modules/ml/doc/decision_trees.rst b/modules/ml/doc/decision_trees.rst index 88427b773d..1c84e17e7e 100644 --- a/modules/ml/doc/decision_trees.rst +++ b/modules/ml/doc/decision_trees.rst @@ -78,7 +78,7 @@ The structure represents a possible decision tree node split. It has public memb Pointer to the next split in the node list of splits. -.. ocv:member:: int subset[2] +.. ocv:member:: int[] subset Bit array indicating the value subset in case of split on a categorical variable. The rule is: @@ -90,13 +90,11 @@ The structure represents a possible decision tree node split. It has public memb .. ocv:member:: float ord.c - The threshold value in case of split on an ordered variable. The rule is: + The threshold value in case of split on an ordered variable. The rule is: :: -:: - - if var_value < c - then next_node<-left - else next_node<-right + if var_value < c + then next_node<-left + else next_node<-right .. ocv:member:: int ord.split_point @@ -125,7 +123,7 @@ The structure represents a node in a decision tree. It has public members: Pointer to the parent node. -.. ocv:mebmer:: CvDTreeNode* left +.. ocv:member:: CvDTreeNode* left Pointer to the left child node. @@ -137,7 +135,7 @@ The structure represents a node in a decision tree. It has public members: Pointer to the first (primary) split in the node list of splits. -.. ocv:mebmer:: int sample_count +.. ocv:member:: int sample_count The number of samples that fall into the node at the training stage. It is used to resolve the difficult cases - when the variable for the primary split is missing and all the variables for other surrogate splits are missing too. In this case the sample is directed to the left if ``left->sample_count > right->sample_count`` and to the right otherwise. diff --git a/modules/ml/doc/expectation_maximization.rst b/modules/ml/doc/expectation_maximization.rst index c7e69827ab..16ca6a7690 100644 --- a/modules/ml/doc/expectation_maximization.rst +++ b/modules/ml/doc/expectation_maximization.rst @@ -62,7 +62,7 @@ Alternatively, the algorithm may start with the M-step when the initial values f :math:`p_{i,k}` can be provided. Another alternative when :math:`p_{i,k}` are unknown is to use a simpler clustering algorithm to pre-cluster the input samples and thus obtain initial :math:`p_{i,k}` . Often (including macnine learning) the -:ref:`kmeans` algorithm is used for that purpose. +:ocv:func:`kmeans` algorithm is used for that purpose. One of the main problems of the EM algorithm is a large number of parameters to estimate. The majority of the parameters reside in @@ -176,7 +176,7 @@ Unlike many of the ML models, EM is an unsupervised learning algorithm and it do :math:`\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N` (indices of the most probable mixture component for each sample). The trained model can be used further for prediction, just like any other classifier. The trained model is similar to the -:ref:`Bayes classifier`. +:ocv:class:`CvBayesClassifier`. For an example of clustering random samples of the multi-Gaussian distribution using EM, see ``em.cpp`` sample in the OpenCV distribution. diff --git a/modules/ml/doc/gradient_boosted_trees.rst b/modules/ml/doc/gradient_boosted_trees.rst index 12ee1ef351..e16a52653c 100644 --- a/modules/ml/doc/gradient_boosted_trees.rst +++ b/modules/ml/doc/gradient_boosted_trees.rst @@ -13,6 +13,7 @@ differential loss function, some popular ones are implemented. Decision trees (:ocv:class:`CvDTree`) usage as base learners allows to process ordered and categorical variables. +.. _Training GBT: Training the GBT model ---------------------- @@ -67,7 +68,7 @@ The following loss functions are implemented for regression problems: \delta\cdot\left(|y-f(x)|-\dfrac{\delta}{2}\right) & : |y-f(x)|>\delta\\ \dfrac{1}{2}\cdot(y-f(x))^2 & : |y-f(x)|\leq\delta \end{array} \right.`, - where :math:`\delta` is the :math:`\alpha`-quantile estimation of the + where :math:`\delta` is the :math:`\alpha`-quantile estimation of the :math:`|y-f(x)|`. In the current implementation :math:`\alpha=0.2`. @@ -88,9 +89,10 @@ where :math:`f_0` is the initial guess (the best constant model) and :math:`\nu` is a regularization parameter from the interval :math:`(0,1]`, futher called *shrinkage*. +.. _Predicting with GBT: Predicting with the GBT Model -------------------------- +----------------------------- To get the GBT model prediciton, you need to compute the sum of responses of all the trees in the ensemble. For regression problems, it is the answer. @@ -118,7 +120,7 @@ CvGBTreesParams::CvGBTreesParams .. ocv:function:: CvGBTreesParams::CvGBTreesParams( int loss_function_type, int weak_count, float shrinkage, float subsample_portion, int max_depth, bool use_surrogates ) :param loss_function_type: Type of the loss function used for training - (see :ref:`Training the GBT model`). It must be one of the + (see :ref:`Training GBT`). It must be one of the following types: ``CvGBTrees::SQUARED_LOSS``, ``CvGBTrees::ABSOLUTE_LOSS``, ``CvGBTrees::HUBER_LOSS``, ``CvGBTrees::DEVIANCE_LOSS``. The first three types are used for regression problems, and the last one for @@ -128,7 +130,7 @@ CvGBTreesParams::CvGBTreesParams count of trees in the GBT model, where ``K`` is the output classes count (equal to one in case of a regression). - :param shrinkage: Regularization parameter (see :ref:`Training the GBT model`). + :param shrinkage: Regularization parameter (see :ref:`Training GBT`). :param subsample_portion: Portion of the whole training set used for each algorithm iteration. Subset is generated randomly. For more information see @@ -222,13 +224,13 @@ Predicts a response for an input sample. only one model. :param k: Number of tree ensembles built in case of the classification problem - (see :ref:`Training the GBT model`). Use this + (see :ref:`Training GBT`). Use this parameter to change the ouput to sum of the trees' predictions in the ``k``-th ensemble only. To get the total GBT model prediction, ``k`` value must be -1. For regression problems, ``k`` is also equal to -1. The method predicts the response corresponding to the given sample -(see :ref:`Predicting with the GBT model`). +(see :ref:`Predicting with GBT`). The result is either the class label or the estimated function value. The :ocv:func:`predict` method enables using the parallel version of the GBT model prediction if the OpenCV is built with the TBB library. In this case, predictions diff --git a/modules/ml/doc/neural_networks.rst b/modules/ml/doc/neural_networks.rst index 89b11f1816..ea5c8bcbb2 100644 --- a/modules/ml/doc/neural_networks.rst +++ b/modules/ml/doc/neural_networks.rst @@ -71,7 +71,7 @@ so the error on the test set usually starts increasing after the network size reaches a limit. Besides, the larger networks are trained much longer than the smaller ones, so it is reasonable to pre-process the data, using -:ocv:func:`PCA::operator ()` or similar technique, and train a smaller network +:ocv:func:`PCA::operator()` or similar technique, and train a smaller network on only essential features. Another MPL feature is an inability to handle categorical diff --git a/modules/ml/doc/random_trees.rst b/modules/ml/doc/random_trees.rst index a1f357777b..84a50c27db 100644 --- a/modules/ml/doc/random_trees.rst +++ b/modules/ml/doc/random_trees.rst @@ -32,25 +32,13 @@ For the random trees usage example, please, see letter_recog.cpp sample in OpenC **References:** -* - *Machine Learning*, Wald I, July 2002. + * *Machine Learning*, Wald I, July 2002. http://stat-www.berkeley.edu/users/breiman/wald2002-1.pdf - http://stat-www.berkeley.edu/users/breiman/wald2002-1.pdf + * *Looking Inside the Black Box*, Wald II, July 2002. http://stat-www.berkeley.edu/users/breiman/wald2002-2.pdf -* - *Looking Inside the Black Box*, Wald II, July 2002. + * *Software for the Masses*, Wald III, July 2002. http://stat-www.berkeley.edu/users/breiman/wald2002-3.pdf - http://stat-www.berkeley.edu/users/breiman/wald2002-2.pdf - -* - *Software for the Masses*, Wald III, July 2002. - - http://stat-www.berkeley.edu/users/breiman/wald2002-3.pdf - -* - And other articles from the web site - http://www.stat.berkeley.edu/users/breiman/RandomForests/cc_home.htm - . + * And other articles from the web site http://www.stat.berkeley.edu/users/breiman/RandomForests/cc_home.htm CvRTParams ---------- diff --git a/modules/python/test/test.py b/modules/python/test/test.py index e8d592c5f6..9271aa33a4 100644 --- a/modules/python/test/test.py +++ b/modules/python/test/test.py @@ -659,7 +659,7 @@ class FunctionTests(OpenCVTests): self.assert_(li[0] != None) def test_InPaint(self): - src = self.get_sample("doc/pics/building.jpg") + src = self.get_sample("samples/cpp/building.jpg") msk = cv.CreateImage(cv.GetSize(src), cv.IPL_DEPTH_8U, 1) damaged = cv.CloneMat(src) repaired = cv.CreateImage(cv.GetSize(src), cv.IPL_DEPTH_8U, 3) @@ -866,7 +866,7 @@ class FunctionTests(OpenCVTests): def yield_line_image(self): """ Needed by HoughLines tests """ - src = self.get_sample("doc/pics/building.jpg", 0) + src = self.get_sample("samples/cpp/building.jpg", 0) dst = cv.CreateImage(cv.GetSize(src), 8, 1) cv.Canny(src, dst, 50, 200, 3) return dst @@ -2104,7 +2104,7 @@ class DocumentFragmentTests(OpenCVTests): """ Test the fragments of code that are included in the documentation """ def setUp(self): OpenCVTests.setUp(self) - sys.path.append("../doc/python_fragments") + sys.path.append(".") def test_precornerdetect(self): from precornerdetect import precornerdetect @@ -2118,7 +2118,7 @@ class DocumentFragmentTests(OpenCVTests): def test_findstereocorrespondence(self): from findstereocorrespondence import findstereocorrespondence - (l,r) = [self.get_sample("doc/pics/tsukuba_%s.png" % c, cv.CV_LOAD_IMAGE_GRAYSCALE) for c in "lr"] + (l,r) = [self.get_sample("samples/cpp/tsukuba_%s.png" % c, cv.CV_LOAD_IMAGE_GRAYSCALE) for c in "lr"] (disparity_left, disparity_right) = findstereocorrespondence(l, r) @@ -2129,7 +2129,7 @@ class DocumentFragmentTests(OpenCVTests): def test_calchist(self): from calchist import hs_histogram i1 = self.get_sample("samples/c/lena.jpg") - i2 = self.get_sample("doc/pics/building.jpg") + i2 = self.get_sample("samples/cpp/building.jpg") i3 = cv.CloneMat(i1) cv.Flip(i3, i3, 1) h1 = hs_histogram(i1) diff --git a/modules/video/doc/motion_analysis_and_object_tracking.rst b/modules/video/doc/motion_analysis_and_object_tracking.rst index c05f9206af..cf0249078e 100644 --- a/modules/video/doc/motion_analysis_and_object_tracking.rst +++ b/modules/video/doc/motion_analysis_and_object_tracking.rst @@ -205,10 +205,10 @@ In case of point sets, the problem is formulated as follows: you need to find a when ``fullAffine=false`` . .. seealso:: - :ocv:func:`getAffineTransform`, - :ocv:func:`getPerspectiveTransform`, - :ocv:func:`findHomography` + :ocv:func:`getAffineTransform`, + :ocv:func:`getPerspectiveTransform`, + :ocv:func:`findHomography` @@ -242,14 +242,10 @@ That is, MHI pixels where the motion occurs are set to the current ``timestamp`` The function, together with :ocv:func:`calcMotionGradient` and :ocv:func:`calcGlobalOrientation` , implements a motion templates technique described in -[Davis97]_ -and -[Bradski00]_ -. +[Davis97]_ and [Bradski00]_. See also the OpenCV sample ``motempl.c`` that demonstrates the use of all the motion template functions. - calcMotionGradient ---------------------- Calculates a gradient orientation of a motion history image. @@ -267,7 +263,9 @@ Calculates a gradient orientation of a motion history image. :param orientation: Output motion gradient orientation image that has the same type and the same size as ``mhi`` . Each pixel of the image is a motion orientation, from 0 to 360 degrees. - :param delta1, delta2: Minimum and maximum allowed difference between ``mhi`` values within a pixel neighorhood. That is, the function finds the minimum ( :math:`m(x,y)` ) and maximum ( :math:`M(x,y)` ) ``mhi`` values over :math:`3 \times 3` neighborhood of each pixel and marks the motion orientation at :math:`(x, y)` as valid only if + :param delta1: Minimal (or maximal) allowed difference between ``mhi`` values within a pixel neighorhood. + + :param delta2: Maximal (or minimal) allowed difference between ``mhi`` values within a pixel neighorhood. That is, the function finds the minimum ( :math:`m(x,y)` ) and maximum ( :math:`M(x,y)` ) ``mhi`` values over :math:`3 \times 3` neighborhood of each pixel and marks the motion orientation at :math:`(x, y)` as valid only if .. math:: @@ -354,6 +352,7 @@ Finds an object center, size, and orientation. .. ocv:pyfunction:: cv2.CamShift(probImage, window, criteria) -> retval, window .. ocv:cfunction:: int cvCamShift( const CvArr* probImage, CvRect window, CvTermCriteria criteria, CvConnectedComp* comp, CvBox2D* box=NULL ) + .. ocv:pyoldfunction:: cv.CamShift(probImage, window, criteria)-> (int, comp, box) :param probImage: Back projection of the object histogram. See :ocv:func:`calcBackProject` . @@ -501,7 +500,7 @@ BackgroundSubtractor::operator() -------------------------------- Computes a foreground mask. -.. ocv:function:: virtual void BackgroundSubtractor::operator()(InputArray image, OutputArray fgmask, double learningRate=0) +.. ocv:function:: void BackgroundSubtractor::operator()(InputArray image, OutputArray fgmask, double learningRate=0) .. ocv:pyfunction:: cv2.BackgroundSubtractor.apply(image[, fgmask[, learningRate]]) -> fgmask @@ -514,7 +513,7 @@ BackgroundSubtractor::getBackgroundImage ---------------------------------------- Computes a background image. -.. ocv:function:: virtual void BackgroundSubtractor::getBackgroundImage(OutputArray backgroundImage) const +.. ocv:function:: void BackgroundSubtractor::getBackgroundImage(OutputArray backgroundImage) const :param backgroundImage: The output background image. @@ -559,7 +558,7 @@ BackgroundSubtractorMOG::operator() ----------------------------------- Updates the background model and returns the foreground mask -.. ocv:function:: virtual void BackgroundSubtractorMOG::operator()(InputArray image, OutputArray fgmask, double learningRate=0) +.. ocv:function:: void BackgroundSubtractorMOG::operator()(InputArray image, OutputArray fgmask, double learningRate=0) Parameters are the same as in ``BackgroundSubtractor::operator()`` @@ -636,17 +635,16 @@ BackgroundSubtractorMOG2::operator() ------------------------------------ Updates the background model and computes the foreground mask -.. ocv:function:: virtual void BackgroundSubtractorMOG2::operator()(InputArray image, OutputArray fgmask, double learningRate=-1) - - See ``BackgroundSubtractor::operator ()``. +.. ocv:function:: void BackgroundSubtractorMOG2::operator()(InputArray image, OutputArray fgmask, double learningRate=-1) + See :ocv:func:`BackgroundSubtractor::operator()`. BackgroundSubtractorMOG2::getBackgroundImage -------------------------------------------- Returns background image -.. ocv:function:: virtual void BackgroundSubtractorMOG2::getBackgroundImage(OutputArray backgroundImage) +.. ocv:function:: void BackgroundSubtractorMOG2::getBackgroundImage(OutputArray backgroundImage) See :ocv:func:`BackgroundSubtractor::getBackgroundImage`. diff --git a/samples/cpp/building.jpg b/samples/cpp/building.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6056492f2fa97d2e57ed078b54b5afd8b6fbb6cb GIT binary patch literal 79718 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%0D+x)x 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�i!{H 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