Matrix Reductions
=================

.. highlight:: cpp

.. index:: gpu::meanStdDev

gpu::meanStdDev
-------------------
.. ocv:function:: void gpu::meanStdDev(const GpuMat\& mtx, Scalar\& mean, Scalar\& stddev)

    Computes a mean value and a standard deviation of matrix elements.

    :param mtx: Source matrix.  ``CV_8UC1``  matrices are supported for now.

    :param mean: Mean value.

    :param stddev: Standard deviation value.

.. seealso:: 
   :ocv:func:`meanStdDev` 

.. index:: gpu::norm

gpu::norm
-------------
.. ocv:function:: double gpu::norm(const GpuMat\& src1, int normType=NORM_L2)
.. ocv:function:: double gpu::norm(const GpuMat\& src1, int normType, GpuMat\& buf)
.. ocv:function:: double norm(const GpuMat\& src1, const GpuMat\& src2, int normType=NORM_L2)

    Returns the norm of a matrix (or difference of two matrices).

    :param src1: Source matrix. Any matrices except 64F are supported.

    :param src2: Second source matrix (if any) with the same size and type as ``src1``.

    :param normType: Norm type.  ``NORM_L1`` ,  ``NORM_L2`` , and  ``NORM_INF``  are supported for now.

    :param buf: Optional buffer to avoid extra memory allocations. It is resized automatically.

.. seealso:: 
   :ocv:func:`norm`

.. index:: gpu::sum

gpu::sum
------------
.. ocv:function:: Scalar gpu::sum(const GpuMat\& src)

.. ocv:function:: Scalar gpu::sum(const GpuMat\& src, GpuMat\& buf)

    Returns the sum of matrix elements.

    :param src: Source image of any depth except for ``CV_64F`` .

    :param buf: Optional buffer to avoid extra memory allocations. It is resized automatically.

.. seealso:: 
   :ocv:func:`sum` 

.. index:: gpu::absSum

gpu::absSum
---------------
.. ocv:function:: Scalar gpu::absSum(const GpuMat\& src)

.. ocv:function:: Scalar gpu::absSum(const GpuMat\& src, GpuMat\& buf)

    Returns the sum of absolute values for matrix elements.

    :param src: Source image of any depth except for ``CV_64F`` .

    :param buf: Optional buffer to avoid extra memory allocations. It is resized automatically.

.. index:: gpu::sqrSum

gpu::sqrSum
---------------
.. ocv:function:: Scalar gpu::sqrSum(const GpuMat\& src)

.. ocv:function:: Scalar gpu::sqrSum(const GpuMat\& src, GpuMat\& buf)

    Returns the squared sum of matrix elements.

    :param src: Source image of any depth except for ``CV_64F`` .

    :param buf: Optional buffer to avoid extra memory allocations. It is resized automatically.

.. index:: gpu::minMax

gpu::minMax
---------------
.. ocv:function:: void gpu::minMax(const GpuMat\& src, double* minVal, double* maxVal=0, const GpuMat\& mask=GpuMat())

.. ocv:function:: void gpu::minMax(const GpuMat\& src, double* minVal, double* maxVal, const GpuMat\& mask, GpuMat\& buf)

    Finds global minimum and maximum matrix elements and returns their values.

    :param src: Single-channel source image.

    :param minVal: Pointer to the returned minimum value.  Use ``NULL``  if not required.

    :param maxVal: Pointer to the returned maximum value.  Use ``NULL``  if not required.

    :param mask: Optional mask to select a sub-matrix.

    :param buf: Optional buffer to avoid extra memory allocations. It is resized automatically.

The function does not work with ``CV_64F`` images on GPUs with the compute capability < 1.3.
    
.. seealso:: 
   :ocv:func:`minMaxLoc` 

.. index:: gpu::minMaxLoc

gpu::minMaxLoc
------------------
.. ocv:function:: void gpu::minMaxLoc(const GpuMat& src, double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc=0, const GpuMat& mask=GpuMat())

.. ocv:function:: void gpu::minMaxLoc(const GpuMat& src, double* minVal, double* maxVal, Point* minLoc, Point* maxLoc, const GpuMat& mask, GpuMat& valbuf, GpuMat& locbuf)

    Finds global minimum and maximum matrix elements and returns their values with locations.

    :param src: Single-channel source image.

    :param minVal: Pointer to the returned minimum value. Use ``NULL``  if not required.

    :param maxVal: Pointer to the returned maximum value. Use ``NULL``  if not required.

    :param minValLoc: Pointer to the returned minimum location. Use ``NULL``  if not required.

    :param maxValLoc: Pointer to the returned maximum location. Use ``NULL``  if not required.

    :param mask: Optional mask to select a sub-matrix.

    :param valbuf: Optional values buffer to avoid extra memory allocations. It is resized automatically.

    :param locbuf: Optional locations buffer to avoid extra memory allocations. It is resized automatically.

    The function does not work with ``CV_64F`` images on GPU with the compute capability < 1.3.

.. seealso:: 
   :ocv:func:`minMaxLoc` 

.. index:: gpu::countNonZero

gpu::countNonZero
---------------------
.. ocv:function:: int gpu::countNonZero(const GpuMat\& src)

.. ocv:function:: int gpu::countNonZero(const GpuMat\& src, GpuMat\& buf)

    Counts non-zero matrix elements.

    :param src: Single-channel source image.

    :param buf: Optional buffer to avoid extra memory allocations. It is resized automatically.

The function does not work with ``CV_64F`` images on GPUs with the compute capability < 1.3.
    
.. seealso:: 
   :ocv:func:`countNonZero` 
