diff --git a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst index d486bc8ca..128200a03 100644 --- a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst +++ b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst @@ -286,6 +286,8 @@ For points in an image of a stereo pair, computes the corresponding epilines in .. ocv:cfunction:: void cvComputeCorrespondEpilines( const CvMat* points, int which_image, const CvMat* fundamental_matrix, CvMat* correspondent_lines ) +.. ocv:pyfunction:: cv2.computeCorrespondEpilines(points, whichImage, F[, lines]) -> lines + :param points: Input points. :math:`N \times 1` or :math:`1 \times N` matrix of type ``CV_32FC2`` or ``vector`` . :param whichImage: Index of the image (1 or 2) that contains the ``points`` . diff --git a/modules/core/include/opencv2/core/base.hpp b/modules/core/include/opencv2/core/base.hpp index 9644f9801..013f573a6 100644 --- a/modules/core/include/opencv2/core/base.hpp +++ b/modules/core/include/opencv2/core/base.hpp @@ -449,15 +449,15 @@ _AccTp normInf(const _Tp* a, const _Tp* b, int n) ////////////////// forward declarations for important OpenCV types ////////////////// -template class CV_EXPORTS Vec; -template class CV_EXPORTS Matx; +template class Vec; +template class Matx; -template class CV_EXPORTS Complex; -template class CV_EXPORTS Point_; -template class CV_EXPORTS Point3_; -template class CV_EXPORTS Size_; -template class CV_EXPORTS Rect_; -template class CV_EXPORTS Scalar_; +template class Complex; +template class Point_; +template class Point3_; +template class Size_; +template class Rect_; +template class Scalar_; class CV_EXPORTS RotatedRect; class CV_EXPORTS Range; @@ -472,16 +472,16 @@ class CV_EXPORTS MatExpr; class CV_EXPORTS SparseMat; typedef Mat MatND; -template class CV_EXPORTS Mat_; -template class CV_EXPORTS SparseMat_; +template class Mat_; +template class SparseMat_; class CV_EXPORTS MatConstIterator; class CV_EXPORTS SparseMatIterator; class CV_EXPORTS SparseMatConstIterator; -template class CV_EXPORTS MatIterator_; -template class CV_EXPORTS MatConstIterator_; -template class CV_EXPORTS SparseMatIterator_; -template class CV_EXPORTS SparseMatConstIterator_; +template class MatIterator_; +template class MatConstIterator_; +template class SparseMatIterator_; +template class SparseMatConstIterator_; namespace ogl { diff --git a/modules/core/include/opencv2/core/core_c.h b/modules/core/include/opencv2/core/core_c.h index 0ed3edec6..74a1e403a 100644 --- a/modules/core/include/opencv2/core/core_c.h +++ b/modules/core/include/opencv2/core/core_c.h @@ -1906,7 +1906,7 @@ typedef Ptr MemStorage; i.e. no constructors or destructors are called for the sequence elements. */ -template class CV_EXPORTS Seq +template class Seq { public: typedef SeqIterator<_Tp> iterator; @@ -1989,7 +1989,7 @@ public: /*! STL-style Sequence Iterator inherited from the CvSeqReader structure */ -template class CV_EXPORTS SeqIterator : public CvSeqReader +template class SeqIterator : public CvSeqReader { public: //! the default constructor diff --git a/modules/core/include/opencv2/core/cvdef.h b/modules/core/include/opencv2/core/cvdef.h index 5a70d38a7..46f294962 100644 --- a/modules/core/include/opencv2/core/cvdef.h +++ b/modules/core/include/opencv2/core/cvdef.h @@ -201,8 +201,10 @@ #if !defined _MSC_VER && !defined __BORLANDC__ # if defined __cplusplus && __cplusplus >= 201103L # include + typedef std::uint32_t uint; # else # include + typedef uint32_t uint; # endif #else typedef unsigned uint; diff --git a/modules/core/include/opencv2/core/cvstd.hpp b/modules/core/include/opencv2/core/cvstd.hpp index 0f96941df..5014dba0f 100644 --- a/modules/core/include/opencv2/core/cvstd.hpp +++ b/modules/core/include/opencv2/core/cvstd.hpp @@ -127,7 +127,7 @@ CV_EXPORTS void fastFree(void* ptr); /*! The STL-compilant memory Allocator based on cv::fastMalloc() and cv::fastFree() */ -template class CV_EXPORTS Allocator +template class Allocator { public: typedef _Tp value_type; @@ -183,7 +183,7 @@ public: \note{Another good property of the class is that the operations on the reference counter are atomic, i.e. it is safe to use the class in multi-threaded applications} */ -template class CV_EXPORTS Ptr +template class Ptr { public: //! empty constructor diff --git a/modules/core/include/opencv2/core/mat.hpp b/modules/core/include/opencv2/core/mat.hpp index b69946939..c132be945 100644 --- a/modules/core/include/opencv2/core/mat.hpp +++ b/modules/core/include/opencv2/core/mat.hpp @@ -831,7 +831,7 @@ protected: img(i,j)[2] ^= (uchar)(i ^ j); // img(y,x)[c] accesses c-th channel of the pixel (x,y) \endcode */ -template class CV_EXPORTS Mat_ : public Mat +template class Mat_ : public Mat { public: typedef _Tp value_type; @@ -1358,7 +1358,7 @@ public: m_.ref(2) += m_(3); // equivalent to m.ref(2) += m.value(3); \endcode */ -template class CV_EXPORTS SparseMat_ : public SparseMat +template class SparseMat_ : public SparseMat { public: typedef SparseMatIterator_<_Tp> iterator; @@ -1730,7 +1730,7 @@ public: This is the derived from cv::SparseMatConstIterator_ class that introduces more convenient operator *() for accessing the current element. */ -template class CV_EXPORTS SparseMatIterator_ : public SparseMatConstIterator_<_Tp> +template class SparseMatIterator_ : public SparseMatConstIterator_<_Tp> { public: diff --git a/modules/core/include/opencv2/core/matx.hpp b/modules/core/include/opencv2/core/matx.hpp index 19a4d28e4..86a35cd75 100644 --- a/modules/core/include/opencv2/core/matx.hpp +++ b/modules/core/include/opencv2/core/matx.hpp @@ -81,7 +81,7 @@ struct CV_EXPORTS Matx_DivOp {}; struct CV_EXPORTS Matx_MatMulOp {}; struct CV_EXPORTS Matx_TOp {}; -template class CV_EXPORTS Matx +template class Matx { public: enum { depth = DataType<_Tp>::depth, @@ -286,7 +286,7 @@ template static double norm(const Matx<_Tp, m, n>& M In addition to the universal notation like Vec, you can use shorter aliases for the most popular specialized variants of Vec, e.g. Vec3f ~ Vec. */ -template class CV_EXPORTS Vec : public Matx<_Tp, cn, 1> +template class Vec : public Matx<_Tp, cn, 1> { public: typedef _Tp value_type; diff --git a/modules/core/include/opencv2/core/types.hpp b/modules/core/include/opencv2/core/types.hpp index 05cf5052f..67e551e62 100644 --- a/modules/core/include/opencv2/core/types.hpp +++ b/modules/core/include/opencv2/core/types.hpp @@ -68,7 +68,7 @@ namespace cv more convenient access to the real and imaginary parts using through the simple field access, as opposite to std::complex::real() and std::complex::imag(). */ -template class CV_EXPORTS Complex +template class Complex { public: @@ -120,7 +120,7 @@ public: as a template parameter. There are a few shorter aliases available for user convenience. See cv::Point, cv::Point2i, cv::Point2f and cv::Point2d. */ -template class CV_EXPORTS Point_ +template class Point_ { public: typedef _Tp value_type; @@ -191,7 +191,7 @@ public: \see cv::Point3i, cv::Point3f and cv::Point3d */ -template class CV_EXPORTS Point3_ +template class Point3_ { public: typedef _Tp value_type; @@ -256,7 +256,7 @@ public: The class represents the size of a 2D rectangle, image size, matrix size etc. Normally, cv::Size ~ cv::Size_ is used. */ -template class CV_EXPORTS Size_ +template class Size_ { public: typedef _Tp value_type; @@ -314,7 +314,7 @@ public: The class represents a 2D rectangle with coordinates of the specified data type. Normally, cv::Rect ~ cv::Rect_ is used. */ -template class CV_EXPORTS Rect_ +template class Rect_ { public: typedef _Tp value_type; @@ -470,7 +470,7 @@ public: This is partially specialized cv::Vec class with the number of elements = 4, i.e. a short vector of four elements. Normally, cv::Scalar ~ cv::Scalar_ is used. */ -template class CV_EXPORTS Scalar_ : public Vec<_Tp, 4> +template class Scalar_ : public Vec<_Tp, 4> { public: //! various constructors diff --git a/modules/core/include/opencv2/core/utility.hpp b/modules/core/include/opencv2/core/utility.hpp index d2942f8c5..5cc538623 100644 --- a/modules/core/include/opencv2/core/utility.hpp +++ b/modules/core/include/opencv2/core/utility.hpp @@ -80,7 +80,7 @@ namespace cv } \endcode */ -template class CV_EXPORTS AutoBuffer +template class AutoBuffer { public: typedef _Tp value_type; diff --git a/modules/features2d/include/opencv2/features2d.hpp b/modules/features2d/include/opencv2/features2d.hpp index 1f0a92c18..4e3f3b80a 100644 --- a/modules/features2d/include/opencv2/features2d.hpp +++ b/modules/features2d/include/opencv2/features2d.hpp @@ -961,7 +961,7 @@ struct CV_EXPORTS Hamming typedef Hamming HammingLUT; -template struct CV_EXPORTS HammingMultilevel +template struct HammingMultilevel { enum { normType = NORM_HAMMING + (cellsize>1) }; typedef unsigned char ValueType; diff --git a/modules/highgui/doc/user_interface.rst b/modules/highgui/doc/user_interface.rst index 3b822e488..37cc79013 100644 --- a/modules/highgui/doc/user_interface.rst +++ b/modules/highgui/doc/user_interface.rst @@ -81,6 +81,9 @@ The function ``imshow`` displays an image in the specified window. If the window If window was created with OpenGL support, ``imshow`` also support :ocv:class:`ogl::Buffer` , :ocv:class:`ogl::Texture2D` and :ocv:class:`gpu::GpuMat` as input. +.. note:: This function should be followed by ``waitKey`` function which displays the image for specified milliseconds. Otherwise, it won't display the image. + + namedWindow --------------- Creates a window. diff --git a/modules/imgproc/doc/filtering.rst b/modules/imgproc/doc/filtering.rst index e7382ece0..6d89e206b 100755 --- a/modules/imgproc/doc/filtering.rst +++ b/modules/imgproc/doc/filtering.rst @@ -759,7 +759,7 @@ Dilates an image by using a specific structuring element. :param dst: output image of the same size and type as ``src``. - :param element: structuring element used for dilation; if ``element=Mat()`` , a ``3 x 3`` rectangular structuring element is used. + :param kernel: structuring element used for dilation; if ``element=Mat()`` , a ``3 x 3`` rectangular structuring element is used. Kernel can be created using :ocv:func:`getStructuringElement` :param anchor: position of the anchor within the element; default value ``(-1, -1)`` means that the anchor is at the element center. @@ -782,11 +782,16 @@ The function supports the in-place mode. Dilation can be applied several ( ``ite :ocv:func:`erode`, :ocv:func:`morphologyEx`, :ocv:func:`createMorphologyFilter` + :ocv:func:`getStructuringElement` + .. Sample code:: * : An example using the morphological dilate operation can be found at opencv_source_code/samples/cpp/morphology2.cpp + + + erode ----- Erodes an image by using a specific structuring element. @@ -801,7 +806,7 @@ Erodes an image by using a specific structuring element. :param dst: output image of the same size and type as ``src``. - :param element: structuring element used for erosion; if ``element=Mat()`` , a ``3 x 3`` rectangular structuring element is used. + :param kernel: structuring element used for erosion; if ``element=Mat()`` , a ``3 x 3`` rectangular structuring element is used. Kernel can be created using :ocv:func:`getStructuringElement`. :param anchor: position of the anchor within the element; default value ``(-1, -1)`` means that the anchor is at the element center. @@ -823,7 +828,8 @@ The function supports the in-place mode. Erosion can be applied several ( ``iter :ocv:func:`dilate`, :ocv:func:`morphologyEx`, - :ocv:func:`createMorphologyFilter` + :ocv:func:`createMorphologyFilter`, + :ocv:func:`getStructuringElement` .. Sample code:: @@ -956,7 +962,7 @@ Returns Gaussian filter coefficients. :param ksize: Aperture size. It should be odd ( :math:`\texttt{ksize} \mod 2 = 1` ) and positive. :param sigma: Gaussian standard deviation. If it is non-positive, it is computed from ``ksize`` as \ ``sigma = 0.3*((ksize-1)*0.5 - 1) + 0.8`` . - :param ktype: Type of filter coefficients. It can be ``CV_32f`` or ``CV_64F`` . + :param ktype: Type of filter coefficients. It can be ``CV_32F`` or ``CV_64F`` . The function computes and returns the :math:`\texttt{ksize} \times 1` matrix of Gaussian filter coefficients: @@ -985,6 +991,32 @@ Two of such generated kernels can be passed to +getGaborKernel +----------------- +Returns Gabor filter coefficients. + +.. ocv:function:: Mat getGaborKernel( Size ksize, double sigma, double theta, double lambd, double gamma, double psi = CV_PI*0.5, int ktype = CV_64F ) + +.. ocv:pyfunction:: cv2.getGaborKernel(ksize, sigma, theta, lambd, gamma[, psi[, ktype]]) -> retval + + :param ksize: Size of the filter returned. + + :param sigma: Standard deviation of the gaussian envelope. + + :param theta: Orientation of the normal to the parallel stripes of a Gabor function. + + :param lambd: Wavelength of the sinusoidal factor. + + :param gamma: Spatial aspect ratio. + + :param psi: Phase offset. + + :param ktype: Type of filter coefficients. It can be ``CV_32F`` or ``CV_64F`` . + +For more details about gabor filter equations and parameters, see: `Gabor Filter `_. + + + getKernelType ------------- Returns the kernel type. @@ -1099,7 +1131,9 @@ Performs advanced morphological transformations. :param dst: Destination image of the same size and type as ``src`` . - :param element: Structuring element. + :param kernel: Structuring element. It can be created using :ocv:func:`getStructuringElement`. + + :param anchor: Anchor position with the kernel. Negative values mean that the anchor is at the kernel center. :param op: Type of a morphological operation that can be one of the following: @@ -1157,7 +1191,8 @@ Any of the operations can be done in-place. In case of multi-channel images, eac :ocv:func:`dilate`, :ocv:func:`erode`, - :ocv:func:`createMorphologyFilter` + :ocv:func:`createMorphologyFilter`, + :ocv:func:`getStructuringElement` .. Sample code:: diff --git a/modules/imgproc/doc/miscellaneous_transformations.rst b/modules/imgproc/doc/miscellaneous_transformations.rst index 20e9be67a..1fc4d68cc 100644 --- a/modules/imgproc/doc/miscellaneous_transformations.rst +++ b/modules/imgproc/doc/miscellaneous_transformations.rst @@ -799,7 +799,6 @@ See the sample ``grabcut.cpp`` to learn how to use the function. .. [Meyer92] Meyer, F. *Color Image Segmentation*, ICIP92, 1992 -.. [Telea04] Alexandru Telea, *An Image Inpainting Technique Based on the Fast Marching Method*. Journal of Graphics, GPU, and Game Tools 9 1, pp 23-34 (2004) .. Sample code:: diff --git a/modules/photo/doc/inpainting.rst b/modules/photo/doc/inpainting.rst index 149da0350..feb5edf2c 100644 --- a/modules/photo/doc/inpainting.rst +++ b/modules/photo/doc/inpainting.rst @@ -23,7 +23,7 @@ Restores the selected region in an image using the region neighborhood. :param flags: Inpainting method that could be one of the following: - * **INPAINT_NS** Navier-Stokes based method. + * **INPAINT_NS** Navier-Stokes based method [Navier01] * **INPAINT_TELEA** Method by Alexandru Telea [Telea04]_. @@ -36,3 +36,9 @@ for more details. * : An example using the inpainting technique can be found at opencv_source_code/samples/cpp/inpaint.cpp * : PYTHON : An example using the inpainting technique can be found at opencv_source_code/samples/python2/inpaint.py + + +.. [Telea04] Telea, Alexandru. "An image inpainting technique based on the fast marching method." Journal of graphics tools 9, no. 1 (2004): 23-34. + +.. [Navier01] Bertalmio, Marcelo, Andrea L. Bertozzi, and Guillermo Sapiro. "Navier-stokes, fluid dynamics, and image and video inpainting." In Computer Vision and Pattern Recognition, 2001. CVPR 2001. Proceedings of the 2001 IEEE Computer Society Conference on, vol. 1, pp. I-355. IEEE, 2001. + diff --git a/modules/stitching/src/motion_estimators.cpp b/modules/stitching/src/motion_estimators.cpp index abd43b11f..7ceb49584 100644 --- a/modules/stitching/src/motion_estimators.cpp +++ b/modules/stitching/src/motion_estimators.cpp @@ -42,13 +42,7 @@ #include "precomp.hpp" #include "opencv2/calib3d/calib3d_c.h" - -#ifdef _MSC_VER - #include - #define isnan(x) _isnan(x) -#else - #include -#endif +#include "opencv2/core/cvdef.h" using namespace cv; using namespace cv::detail; @@ -259,7 +253,7 @@ bool BundleAdjusterBase::estimate(const std::vector &features, bool ok = true; for (int i = 0; i < cam_params_.rows; ++i) { - if (isnan(cam_params_.at(i,0))) + if (cvIsNaN(cam_params_.at(i,0))) { ok = false; break; diff --git a/modules/video/doc/motion_analysis_and_object_tracking.rst b/modules/video/doc/motion_analysis_and_object_tracking.rst index a896f6ecb..4483d5c9e 100644 --- a/modules/video/doc/motion_analysis_and_object_tracking.rst +++ b/modules/video/doc/motion_analysis_and_object_tracking.rst @@ -170,6 +170,8 @@ Finds the geometric transform (warp) between two images in terms of the ECC crit .. ocv:function:: double findTransformECC( InputArray templateImage, InputArray inputImage, InputOutputArray warpMatrix, int motionType=MOTION_AFFINE, TermCriteria criteria=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 50, 0.001)) +.. ocv:pyfunction:: cv2.findTransformECC(templateImage, inputImage, warpMatrix[, motionType[, criteria]]) -> retval, warpMatrix + :param templateImage: single-channel template image; ``CV_8U`` or ``CV_32F`` array. :param inputImage: single-channel input image which should be warped with the final ``warpMatrix`` in order to provide an image similar to ``templateImage``, same type as ``temlateImage``.