### Navigation

- index
- next |
- previous |
- OpenCV 3.0.0-dev documentation »
- OpenCV API Reference »
- cudaarithm. CUDA-accelerated Operations on Matrices »

# Matrix Reductions

## cuda::norm

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

C++:`` double `cuda::``norm`(InputArray src1, int normType)

C++:`` double `cuda::``norm`(InputArray src1, int normType, GpuMat& buf)

C++:`` double `cuda::``norm`(InputArray src1, int normType, InputArray mask, GpuMat& buf)

C++:`` double `cuda::``norm`(InputArray src1, InputArray src2, int normType=NORM_L2)

  Parameters: | src1 – Source matrix. Any matrices except 64F are supported. src2 – Second source matrix (if any) with the same size and type as `src1`. normType – Norm type. `NORM_L1` , `NORM_L2` , and `NORM_INF` are supported for now. mask – optional operation mask; it must have the same size as `src1` and `CV_8UC1` type. buf – Optional buffer to avoid extra memory allocations. It is resized automatically.

See also

`norm()`

## cuda::sum

Returns the sum of matrix elements.

C++:`` Scalar `cuda::``sum`(InputArray src)

C++:`` Scalar `cuda::``sum`(InputArray src, GpuMat& buf)

C++:`` Scalar `cuda::``sum`(InputArray src, InputArray mask, GpuMat& buf)

  Parameters: | src – Source image of any depth except for `CV_64F` . mask – optional operation mask; it must have the same size as `src1` and `CV_8UC1` type. buf – Optional buffer to avoid extra memory allocations. It is resized automatically.

See also

`sum()`

## cuda::absSum

Returns the sum of absolute values for matrix elements.

C++:`` Scalar `cuda::``absSum`(InputArray src)

C++:`` Scalar `cuda::``absSum`(InputArray src, GpuMat& buf)

C++:`` Scalar `cuda::``absSum`(InputArray src, InputArray mask, GpuMat& buf)

  Parameters: | src – Source image of any depth except for `CV_64F` . mask – optional operation mask; it must have the same size as `src1` and `CV_8UC1` type. buf – Optional buffer to avoid extra memory allocations. It is resized automatically.

## cuda::sqrSum

Returns the squared sum of matrix elements.

C++:`` Scalar `cuda::``sqrSum`(InputArray src)

C++:`` Scalar `cuda::``sqrSum`(InputArray src, GpuMat& buf)

C++:`` Scalar `cuda::``sqrSum`(InputArray src, InputArray mask, GpuMat& buf)

  Parameters: | src – Source image of any depth except for `CV_64F` . mask – optional operation mask; it must have the same size as `src1` and `CV_8UC1` type. buf – Optional buffer to avoid extra memory allocations. It is resized automatically.

## cuda::minMax

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

C++:`` void `cuda::``minMax`(InputArray src, double* minVal, double* maxVal=0, InputArray mask=noArray())

C++:`` void `cuda::``minMax`(InputArray src, double* minVal, double* maxVal, InputArray mask, GpuMat& buf)

  Parameters: | src – Single-channel source image. minVal – Pointer to the returned minimum value. Use `NULL` if not required. maxVal – Pointer to the returned maximum value. Use `NULL` if not required. mask – Optional mask to select a sub-matrix. 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.

See also

`minMaxLoc()`

## cuda::minMaxLoc

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

C++:`` void `cuda::``minMaxLoc`(InputArray src, double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc=0, InputArray mask=noArray())

C++:`` void `cuda::``minMaxLoc`(InputArray src, double* minVal, double* maxVal, Point* minLoc, Point* maxLoc, InputArray mask, GpuMat& valbuf, GpuMat& locbuf)

  Parameters: | src – Single-channel source image. minVal – Pointer to the returned minimum value. Use `NULL` if not required. maxVal – Pointer to the returned maximum value. Use `NULL` if not required. minLoc – Pointer to the returned minimum location. Use `NULL` if not required. maxLoc – Pointer to the returned maximum location. Use `NULL` if not required. mask – Optional mask to select a sub-matrix. valbuf – Optional values buffer to avoid extra memory allocations. It is resized automatically. 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.

See also

`minMaxLoc()`

## cuda::countNonZero

Counts non-zero matrix elements.

C++:`` int `cuda::``countNonZero`(InputArray src)

C++:`` int `cuda::``countNonZero`(InputArray src, GpuMat& buf)

  Parameters: | src – Single-channel source image. 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.

See also

`countNonZero()`

## cuda::reduce

Reduces a matrix to a vector.

C++:`` void `cuda::``reduce`(InputArray mtx, OutputArray vec, int dim, int reduceOp, int dtype=-1, Stream& stream=Stream::Null())

  Parameters: | mtx – Source 2D matrix. vec – Destination vector. Its size and type is defined by `dim` and `dtype` parameters. dim – Dimension index along which the matrix is reduced. 0 means that the matrix is reduced to a single row. 1 means that the matrix is reduced to a single column. reduceOp – Reduction operation that could be one of the following: CV_REDUCE_SUM The output is the sum of all rows/columns of the matrix. CV_REDUCE_AVG The output is the mean vector of all rows/columns of the matrix. CV_REDUCE_MAX The output is the maximum (column/row-wise) of all rows/columns of the matrix. CV_REDUCE_MIN The output is the minimum (column/row-wise) of all rows/columns of the matrix. dtype – When it is negative, the destination vector will have the same type as the source matrix. Otherwise, its type will be `CV_MAKE_TYPE(CV_MAT_DEPTH(dtype), mtx.channels())` . stream – Stream for the asynchronous version.

The function `reduce` reduces the matrix to a vector by treating the matrix rows/columns as a set of 1D vectors and performing the specified operation on the vectors until a single row/column is obtained. For example, the function can be used to compute horizontal and vertical projections of a raster image. In case of `CV_REDUCE_SUM` and `CV_REDUCE_AVG` , the output may have a larger element bit-depth to preserve accuracy. And multi-channel arrays are also supported in these two reduction modes.

See also

`reduce()`

## cuda::meanStdDev

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

C++:`` void `cuda::``meanStdDev`(InputArray mtx, Scalar& mean, Scalar& stddev)

C++:`` void `cuda::``meanStdDev`(InputArray mtx, Scalar& mean, Scalar& stddev, GpuMat& buf)

  Parameters: | mtx – Source matrix. `CV_8UC1` matrices are supported for now. mean – Mean value. stddev – Standard deviation value. buf – Optional buffer to avoid extra memory allocations. It is resized automatically.

See also

`meanStdDev()`

## cuda::rectStdDev

Computes a standard deviation of integral images.

C++:`` void `cuda::``rectStdDev`(InputArray src, InputArray sqr, OutputArray dst, Rect rect, Stream& stream=Stream::Null())

  Parameters: | src – Source image. Only the `CV_32SC1` type is supported. sqr – Squared source image. Only the `CV_32FC1` type is supported. dst – Destination image with the same type and size as `src` . rect – Rectangular window. stream – Stream for the asynchronous version.

## cuda::normalize

Normalizes the norm or value range of an array.

C++:`` void `cuda::``normalize`(InputArray src, OutputArray dst, double alpha=1, double beta=0, int norm_type=NORM_L2, int dtype=-1, InputArray mask=noArray())

C++:`` void `cuda::``normalize`(InputArray src, OutputArray dst, double alpha, double beta, int norm_type, int dtype, InputArray mask, GpuMat& norm_buf, GpuMat& cvt_buf)

  Parameters: | src – Input array. dst – Output array of the same size as `src` . alpha – Norm value to normalize to or the lower range boundary in case of the range normalization. beta – Upper range boundary in case of the range normalization; it is not used for the norm normalization. normType – Normalization type ( `NORM_MINMAX` , `NORM_L2` , `NORM_L1` or `NORM_INF` ). dtype – When negative, the output array has the same type as `src`; otherwise, it has the same number of channels as `src` and the depth `=CV_MAT_DEPTH(dtype)`. mask – Optional operation mask. norm_buf – Optional buffer to avoid extra memory allocations. It is resized automatically. cvt_buf – Optional buffer to avoid extra memory allocations. It is resized automatically.

See also

`normalize()`

## cuda::integral

Computes an integral image.

C++:`` void `cuda::``integral`(InputArray src, OutputArray sum, Stream& stream=Stream::Null())

C++:`` void `cuda::``integral`(InputArray src, OutputArray sum, GpuMat& buffer, Stream& stream=Stream::Null())

  Parameters: | src – Source image. Only `CV_8UC1` images are supported for now. sum – Integral image containing 32-bit unsigned integer values packed into `CV_32SC1` . buffer – Optional buffer to avoid extra memory allocations. It is resized automatically. stream – Stream for the asynchronous version.

See also

`integral()`

## cuda::sqrIntegral

Computes a squared integral image.

C++:`` void `cuda::``sqrIntegral`(InputArray src, OutputArray sqsum, Stream& stream=Stream::Null())

C++:`` void `cuda::``sqrIntegral`(InputArray src, OutputArray sqsum, GpuMat& buf, Stream& stream=Stream::Null())

  Parameters: | src – Source image. Only `CV_8UC1` images are supported for now. sqsum – Squared integral image containing 64-bit unsigned integer values packed into `CV_64FC1` . buf – Optional buffer to avoid extra memory allocations. It is resized automatically. stream – Stream for the asynchronous version.

## Help and Feedback

You did not find what you were looking for?

- Ask a question on the Q&A forum.
- If you think something is missing or wrong in the documentation, please file a bug report.

### Navigation

- index
- next |
- previous |
- OpenCV 3.0.0-dev documentation »
- OpenCV API Reference »
- cudaarithm. CUDA-accelerated Operations on Matrices »