| OpenCV 4.3.0 Open Source Computer Vision

Public Types | Public Member Functions | Static Public Member Functions | List of all members
cv::Mat_< _Tp > Class Template Reference
Core functionality » Basic structures

Template matrix class derived from Mat. More...

`#include <opencv2/core/mat.hpp>`

Inheritance diagram for cv::Mat_< _Tp >:

## Public Types
typedef DataType< _Tp >::channel_type | channel_type
typedef MatConstIterator_< _Tp > | const_iterator
typedef MatIterator_< _Tp > | iterator
typedef _Tp | value_type
Public Types inherited from cv::Mat
enum | { MAGIC_VAL = 0x42FF0000, AUTO_STEP = 0, CONTINUOUS_FLAG = CV_MAT_CONT_FLAG, SUBMATRIX_FLAG = CV_SUBMAT_FLAG }
enum | { MAGIC_MASK = 0xFFFF0000, TYPE_MASK = 0x00000FFF, DEPTH_MASK = 7 }

## Public Member Functions
| Mat_ ()
| default constructor More...
| Mat_ (int _rows, int _cols)
| equivalent to Mat(_rows, _cols, DataType<_Tp>::type) More...
| Mat_ (int _rows, int _cols, const _Tp &value)
| constructor that sets each matrix element to specified value More...
| Mat_ (Size _size)
| equivalent to Mat(_size, DataType<_Tp>::type) More...
| Mat_ (Size _size, const _Tp &value)
| constructor that sets each matrix element to specified value More...
| Mat_ (int _ndims, const int *_sizes)
| n-dim array constructor More...
| Mat_ (int _ndims, const int *_sizes, const _Tp &value)
| n-dim array constructor that sets each matrix element to specified value More...
| Mat_ (const Mat &m)
| copy/conversion constructor. If m is of different type, it's converted More...
| Mat_ (const Mat_ &m)
| copy constructor More...
| Mat_ (int _rows, int _cols, _Tp *_data, size_t _step=AUTO_STEP)
| constructs a matrix on top of user-allocated data. step is in bytes(!!!), regardless of the type More...
| Mat_ (int _ndims, const int *_sizes, _Tp *_data, const size_t *_steps=0)
| constructs n-dim matrix on top of user-allocated data. steps are in bytes(!!!), regardless of the type More...
| Mat_ (const Mat_ &m, const Range &rowRange, const Range &colRange=Range::all())
| selects a submatrix More...
| Mat_ (const Mat_ &m, const Rect &roi)
| selects a submatrix More...
| Mat_ (const Mat_ &m, const Range *ranges)
| selects a submatrix, n-dim version More...
| Mat_ (const Mat_ &m, const std::vector< Range > &ranges)
| selects a submatrix, n-dim version More...
| Mat_ (const MatExpr &e)
| from a matrix expression More...
| Mat_ (const std::vector< _Tp > &vec, bool copyData=false)
| makes a matrix out of Vec, std::vector, Point_ or Point3_. The matrix will have a single column More...
template<int n>
| Mat_ (const Vec< typename DataType< _Tp >::channel_type, n > &vec, bool copyData=true)
template<int m, int n>
| Mat_ (const Matx< typename DataType< _Tp >::channel_type, m, n > &mtx, bool copyData=true)
| Mat_ (const Point_< typename DataType< _Tp >::channel_type > &pt, bool copyData=true)
| Mat_ (const Point3_< typename DataType< _Tp >::channel_type > &pt, bool copyData=true)
| Mat_ (const MatCommaInitializer_< _Tp > &commaInitializer)
| Mat_ (std::initializer_list< _Tp > values)
| Mat_ (const std::initializer_list< int > sizes, const std::initializer_list< _Tp > values)
template<std::size_t _Nm>
| Mat_ (const std::array< _Tp, _Nm > &arr, bool copyData=false)
| Mat_ (Mat_ &&m)
| Mat_ (Mat &&m)
| Mat_ (MatExpr &&e)
Mat_ & | adjustROI (int dtop, int dbottom, int dleft, int dright)
| some more overridden methods More...
iterator | begin ()
| iterators; they are smart enough to skip gaps in the end of rows More...
const_iterator | begin () const
int | channels () const
Mat_ | clone () const CV_NODISCARD
Mat_ | col (int x) const
void | create (int _rows, int _cols)
| equivalent to Mat::create(_rows, _cols, DataType<_Tp>::type) More...
void | create (Size _size)
| equivalent to Mat::create(_size, DataType<_Tp>::type) More...
void | create (int _ndims, const int *_sizes)
| equivalent to Mat::create(_ndims, _sizes, DatType<_Tp>::type) More...
Mat_ | cross (const Mat_ &m) const
| cross-product More...
int | depth () const
Mat_ | diag (int d=0) const
size_t | elemSize () const
| overridden forms of Mat::elemSize() etc. More...
size_t | elemSize1 () const
iterator | end ()
const_iterator | end () const
template<typename Functor >
void | forEach (const Functor &operation)
| template methods for for operation over all matrix elements. More...
template<typename Functor >
void | forEach (const Functor &operation) const
template<typename T2 >
| operator Mat_< T2 > () const
| data type conversion More...
template<int m, int n>
| operator Matx< typename DataType< _Tp >::channel_type, m, n > () const
| conversion to Matx More...
template<std::size_t _Nm>
| operator std::array< _Tp, _Nm > () const
| conversion to array. More...
| operator std::vector< _Tp > () const
| conversion to vector. More...
template<int n>
| operator Vec< typename DataType< _Tp >::channel_type, n > () const
| conversion to Vec More...
Mat_ | operator() (const Range &rowRange, const Range &colRange) const
Mat_ | operator() (const Rect &roi) const
Mat_ | operator() (const Range *ranges) const
Mat_ | operator() (const std::vector< Range > &ranges) const
_Tp & | operator() (const int *idx)
| returns reference to the specified element More...
const _Tp & | operator() (const int *idx) const
| returns read-only reference to the specified element More...
template<int n>
_Tp & | operator() (const Vec< int, n > &idx)
| returns reference to the specified element More...
template<int n>
const _Tp & | operator() (const Vec< int, n > &idx) const
| returns read-only reference to the specified element More...
_Tp & | operator() (int idx0)
| returns reference to the specified element (1D case) More...
const _Tp & | operator() (int idx0) const
| returns read-only reference to the specified element (1D case) More...
_Tp & | operator() (int row, int col)
| returns reference to the specified element (2D case) More...
const _Tp & | operator() (int row, int col) const
| returns read-only reference to the specified element (2D case) More...
_Tp & | operator() (int idx0, int idx1, int idx2)
| returns reference to the specified element (3D case) More...
const _Tp & | operator() (int idx0, int idx1, int idx2) const
| returns read-only reference to the specified element (3D case) More...
_Tp & | operator() (Point pt)
const _Tp & | operator() (Point pt) const
Mat_ & | operator= (const Mat &m)
Mat_ & | operator= (const Mat_ &m)
Mat_ & | operator= (const _Tp &s)
| set all the elements to s. More...
Mat_ & | operator= (const MatExpr &e)
| assign a matrix expression More...
Mat_ & | operator= (Mat_ &&m)
Mat_ & | operator= (Mat &&m)
_Tp * | operator[] (int y)
| more convenient forms of row and element access operators More...
const _Tp * | operator[] (int y) const
void | release ()
| equivalent to Mat::release() More...
Mat_ | row (int y) const
| overridden forms of Mat::row() etc. More...
size_t | step1 (int i=0) const
size_t | stepT (int i=0) const
| returns step()/sizeof(_Tp) More...
int | type () const
Public Member Functions inherited from cv::Mat
| Mat ()
| Mat (int rows, int cols, int type)
| Mat (Size size, int type)
| Mat (int rows, int cols, int type, const Scalar &s)
| Mat (Size size, int type, const Scalar &s)
| Mat (int ndims, const int *sizes, int type)
| Mat (const std::vector< int > &sizes, int type)
| Mat (int ndims, const int *sizes, int type, const Scalar &s)
| Mat (const std::vector< int > &sizes, int type, const Scalar &s)
| Mat (const Mat &m)
| Mat (int rows, int cols, int type, void *data, size_t step=AUTO_STEP)
| Mat (Size size, int type, void *data, size_t step=AUTO_STEP)
| Mat (int ndims, const int *sizes, int type, void *data, const size_t *steps=0)
| Mat (const std::vector< int > &sizes, int type, void *data, const size_t *steps=0)
| Mat (const Mat &m, const Range &rowRange, const Range &colRange=Range::all())
| Mat (const Mat &m, const Rect &roi)
| Mat (const Mat &m, const Range *ranges)
| Mat (const Mat &m, const std::vector< Range > &ranges)
template<typename _Tp >
| Mat (const std::vector< _Tp > &vec, bool copyData=false)
template<typename _Tp , typename = typename std::enable_if<std::is_arithmetic<_Tp>::value>::type>
| Mat (const std::initializer_list< _Tp > list)
template<typename _Tp >
| Mat (const std::initializer_list< int > sizes, const std::initializer_list< _Tp > list)
template<typename _Tp , size_t _Nm>
| Mat (const std::array< _Tp, _Nm > &arr, bool copyData=false)
template<typename _Tp , int n>
| Mat (const Vec< _Tp, n > &vec, bool copyData=true)
template<typename _Tp , int m, int n>
| Mat (const Matx< _Tp, m, n > &mtx, bool copyData=true)
template<typename _Tp >
| Mat (const Point_< _Tp > &pt, bool copyData=true)
template<typename _Tp >
| Mat (const Point3_< _Tp > &pt, bool copyData=true)
template<typename _Tp >
| Mat (const MatCommaInitializer_< _Tp > &commaInitializer)
| Mat (const cuda::GpuMat &m)
| download data from GpuMat More...
| Mat (Mat &&m)
| ~Mat ()
| destructor - calls release() More...
void | addref ()
| Increments the reference counter. More...
Mat & | adjustROI (int dtop, int dbottom, int dleft, int dright)
| Adjusts a submatrix size and position within the parent matrix. More...
void | assignTo (Mat &m, int type=-1) const
| Provides a functional form of convertTo. More...
template<typename _Tp >
_Tp & | at (int i0=0)
| Returns a reference to the specified array element. More...
template<typename _Tp >
const _Tp & | at (int i0=0) const
template<typename _Tp >
_Tp & | at (int row, int col)
template<typename _Tp >
const _Tp & | at (int row, int col) const
template<typename _Tp >
_Tp & | at (int i0, int i1, int i2)
template<typename _Tp >
const _Tp & | at (int i0, int i1, int i2) const
template<typename _Tp >
_Tp & | at (const int *idx)
template<typename _Tp >
const _Tp & | at (const int *idx) const
template<typename _Tp , int n>
_Tp & | at (const Vec< int, n > &idx)
template<typename _Tp , int n>
const _Tp & | at (const Vec< int, n > &idx) const
template<typename _Tp >
_Tp & | at (Point pt)
template<typename _Tp >
const _Tp & | at (Point pt) const
template<typename _Tp >
MatIterator_< _Tp > | begin ()
| Returns the matrix iterator and sets it to the first matrix element. More...
template<typename _Tp >
MatConstIterator_< _Tp > | begin () const
int | channels () const
| Returns the number of matrix channels. More...
int | checkVector (int elemChannels, int depth=-1, bool requireContinuous=true) const
Mat | clone () const CV_NODISCARD
| Creates a full copy of the array and the underlying data. More...
Mat | col (int x) const
| Creates a matrix header for the specified matrix column. More...
Mat | colRange (int startcol, int endcol) const
| Creates a matrix header for the specified column span. More...
Mat | colRange (const Range &r) const
void | convertTo (OutputArray m, int rtype, double alpha=1, double beta=0) const
| Converts an array to another data type with optional scaling. More...
void | copySize (const Mat &m)
| internal use function; properly re-allocates _size, _step arrays More...
void | copyTo (OutputArray m) const
| Copies the matrix to another one. More...
void | copyTo (OutputArray m, InputArray mask) const
void | create (int rows, int cols, int type)
| Allocates new array data if needed. More...
void | create (Size size, int type)
void | create (int ndims, const int *sizes, int type)
void | create (const std::vector< int > &sizes, int type)
Mat | cross (InputArray m) const
| Computes a cross-product of two 3-element vectors. More...
void | deallocate ()
| internal use function, consider to use 'release' method instead; deallocates the matrix data More...
int | depth () const
| Returns the depth of a matrix element. More...
Mat | diag (int d=0) const
| Extracts a diagonal from a matrix. More...
double | dot (InputArray m) const
| Computes a dot-product of two vectors. More...
size_t | elemSize () const
| Returns the matrix element size in bytes. More...
size_t | elemSize1 () const
| Returns the size of each matrix element channel in bytes. More...
bool | empty () const
| Returns true if the array has no elements. More...
template<typename _Tp >
MatIterator_< _Tp > | end ()
| Returns the matrix iterator and sets it to the after-last matrix element. More...
template<typename _Tp >
MatConstIterator_< _Tp > | end () const
template<typename _Tp , typename Functor >
void | forEach (const Functor &operation)
| Runs the given functor over all matrix elements in parallel. More...
template<typename _Tp , typename Functor >
void | forEach (const Functor &operation) const
UMat | getUMat (AccessFlag accessFlags, UMatUsageFlags usageFlags=USAGE_DEFAULT) const
| retrieve UMat from Mat More...
MatExpr | inv (int method=DECOMP_LU) const
| Inverses a matrix. More...
bool | isContinuous () const
| Reports whether the matrix is continuous or not. More...
bool | isSubmatrix () const
| returns true if the matrix is a submatrix of another matrix More...
void | locateROI (Size &wholeSize, Point &ofs) const
| Locates the matrix header within a parent matrix. More...
MatExpr | mul (InputArray m, double scale=1) const
| Performs an element-wise multiplication or division of the two matrices. More...
template<typename _Tp , int m, int n>
| operator Matx< _Tp, m, n > () const
template<typename _Tp , std::size_t _Nm>
| operator std::array< _Tp, _Nm > () const
template<typename _Tp >
| operator std::vector< _Tp > () const
template<typename _Tp , int n>
| operator Vec< _Tp, n > () const
Mat | operator() (Range rowRange, Range colRange) const
| Extracts a rectangular submatrix. More...
Mat | operator() (const Rect &roi) const
Mat | operator() (const Range *ranges) const
Mat | operator() (const std::vector< Range > &ranges) const
Mat & | operator= (const Mat &m)
| assignment operators More...
Mat & | operator= (const MatExpr &expr)
Mat & | operator= (const Scalar &s)
| Sets all or some of the array elements to the specified value. More...
Mat & | operator= (Mat &&m)
void | pop_back (size_t nelems=1)
| Removes elements from the bottom of the matrix. More...
uchar * | ptr (int i0=0)
| Returns a pointer to the specified matrix row. More...
const uchar * | ptr (int i0=0) const
uchar * | ptr (int row, int col)
const uchar * | ptr (int row, int col) const
uchar * | ptr (int i0, int i1, int i2)
const uchar * | ptr (int i0, int i1, int i2) const
uchar * | ptr (const int *idx)
const uchar * | ptr (const int *idx) const
template<int n>
uchar * | ptr (const Vec< int, n > &idx)
template<int n>
const uchar * | ptr (const Vec< int, n > &idx) const
template<typename _Tp >
_Tp * | ptr (int i0=0)
template<typename _Tp >
const _Tp * | ptr (int i0=0) const
template<typename _Tp >
_Tp * | ptr (int row, int col)
template<typename _Tp >
const _Tp * | ptr (int row, int col) const
template<typename _Tp >
_Tp * | ptr (int i0, int i1, int i2)
template<typename _Tp >
const _Tp * | ptr (int i0, int i1, int i2) const
template<typename _Tp >
_Tp * | ptr (const int *idx)
template<typename _Tp >
const _Tp * | ptr (const int *idx) const
template<typename _Tp , int n>
_Tp * | ptr (const Vec< int, n > &idx)
template<typename _Tp , int n>
const _Tp * | ptr (const Vec< int, n > &idx) const
template<typename _Tp >
void | push_back (const _Tp &elem)
| Adds elements to the bottom of the matrix. More...
template<typename _Tp >
void | push_back (const Mat_< _Tp > &elem)
template<typename _Tp >
void | push_back (const std::vector< _Tp > &elem)
void | push_back (const Mat &m)
void | push_back_ (const void *elem)
| internal function More...
void | release ()
| Decrements the reference counter and deallocates the matrix if needed. More...
void | reserve (size_t sz)
| Reserves space for the certain number of rows. More...
void | reserveBuffer (size_t sz)
| Reserves space for the certain number of bytes. More...
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. More...
Mat | reshape (int cn, int newndims, const int *newsz) const
Mat | reshape (int cn, const std::vector< int > &newshape) const
void | resize (size_t sz)
| Changes the number of matrix rows. More...
void | resize (size_t sz, const Scalar &s)
Mat | row (int y) const
| Creates a matrix header for the specified matrix row. More...
Mat | rowRange (int startrow, int endrow) const
| Creates a matrix header for the specified row span. More...
Mat | rowRange (const Range &r) const
Mat & | setTo (InputArray value, InputArray mask=noArray())
| Sets all or some of the array elements to the specified value. More...
size_t | step1 (int i=0) const
| Returns a normalized step. More...
MatExpr | t () const
| Transposes a matrix. More...
size_t | total () const
| Returns the total number of array elements. More...
size_t | total (int startDim, int endDim=INT_MAX) const
| Returns the total number of array elements. More...
int | type () const
| Returns the type of a matrix element. More...
void | updateContinuityFlag ()
| internal use method: updates the continuity flag More...

## Static Public Member Functions
static MatExpr | eye (int rows, int cols)
static MatExpr | eye (Size size)
static MatExpr | ones (int rows, int cols)
static MatExpr | ones (Size size)
static MatExpr | ones (int _ndims, const int *_sizes)
static MatExpr | zeros (int rows, int cols)
| overridden forms of Mat::zeros() etc. Data type is omitted, of course More...
static MatExpr | zeros (Size size)
static MatExpr | zeros (int _ndims, const int *_sizes)
Static Public Member Functions inherited from cv::Mat
static Mat | diag (const Mat &d)
| creates a diagonal matrix More...
static MatExpr | eye (int rows, int cols, int type)
| Returns an identity matrix of the specified size and type. More...
static MatExpr | eye (Size size, int type)
static MatAllocator * | getDefaultAllocator ()
static MatAllocator * | getStdAllocator ()
| and the standard allocator More...
static MatExpr | ones (int rows, int cols, int type)
| Returns an array of all 1's of the specified size and type. More...
static MatExpr | ones (Size size, int type)
static MatExpr | ones (int ndims, const int *sz, int type)
static void | setDefaultAllocator (MatAllocator *allocator)
static MatExpr | zeros (int rows, int cols, int type)
| Returns a zero array of the specified size and type. More...
static MatExpr | zeros (Size size, int type)
static MatExpr | zeros (int ndims, const int *sz, int type)

## Additional Inherited Members
Public Attributes inherited from cv::Mat
MatAllocator * | allocator
| custom allocator More...
int | cols
uchar * | data
| pointer to the data More...
const uchar * | dataend
const uchar * | datalimit
const uchar * | datastart
| helper fields used in locateROI and adjustROI More...
int | dims
| the matrix dimensionality, >= 2 More...
int | flags
int | rows
| the number of rows and columns or (-1, -1) when the matrix has more than 2 dimensions More...
MatSize | size
MatStep | step
UMatData * | u
| interaction with UMat More...
Protected Member Functions inherited from cv::Mat
template<typename _Tp , typename Functor >
void | forEach_impl (const Functor &operation)

## Detailed Description

### template<typename _Tp>
class cv::Mat_< _Tp >

Template matrix class derived from Mat.

template<typename _Tp> class Mat_ : public Mat
{
public:
// ... some specific methods
// and
// no new extra fields
};

The class `Mat_<_Tp>` is a thin template wrapper on top of the Mat class. It does not have any extra data fields. Nor this class nor Mat has any virtual methods. Thus, references or pointers to these two classes can be freely but carefully converted one to another. For example:

// create a 100x100 8-bit matrix
Mat M(100,100,CV_8U);
// this will be compiled fine. no any data conversion will be done.
Mat_<float>& M1 = (Mat_<float>&)M;
// the program is likely to crash at the statement below
M1(99,99) = 1.f;

While Mat is sufficient in most cases, Mat_ can be more convenient if you use a lot of element access operations and if you know matrix type at the compilation time. Note that `Mat::at(int y,int x)` and `Mat_::operator()(int y,int x)` do absolutely the same and run at the same speed, but the latter is certainly shorter:

Mat_<double> M(20,20);
for(int i = 0; i < M.rows; i++)
for(int j = 0; j < M.cols; j++)
M(i,j) = 1./(i+j+1);
Mat E, V;
eigen(M,E,V);
cout << E.at<double>(0,0)/E.at<double>(M.rows-1,0);

To use Mat_ for multi-channel images/matrices, pass Vec as a Mat_ parameter:

// allocate a 320x240 color image and fill it with green (in RGB space)
Mat_<Vec3b> img(240, 320, Vec3b(0,255,0));
// now draw a diagonal white line
for(int i = 0; i < 100; i++)
img(i,i)=Vec3b(255,255,255);
// and now scramble the 2nd (red) channel of each pixel
for(int i = 0; i < img.rows; i++)
for(int j = 0; j < img.cols; j++)
img(i,j)[2] ^= (uchar)(i ^ j);

Mat_ is fully compatible with C++11 range-based for loop. For example such loop can be used to safely apply look-up table:

void applyTable(Mat_<uchar>& I, const uchar* const table)
{
for(auto& pixel : I)
{
pixel = table[pixel];
}
}

## Member Typedef Documentation

## ◆ channel_type

template<typename _Tp>

typedef DataType<_Tp>::channel_type cv::Mat_< _Tp >::channel_type

## ◆ const_iterator

template<typename _Tp>

typedef MatConstIterator_<_Tp> cv::Mat_< _Tp >::const_iterator

## ◆ iterator

template<typename _Tp>

typedef MatIterator_<_Tp> cv::Mat_< _Tp >::iterator

## ◆ value_type

template<typename _Tp>

typedef _Tp cv::Mat_< _Tp >::value_type

## Constructor & Destructor Documentation

## ◆ Mat_() [1/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( |  | ) |

default constructor

## ◆ Mat_() [2/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | int | _rows,
|  | int | _cols
| ) |  |

equivalent to Mat(_rows, _cols, DataType<_Tp>::type)

## ◆ Mat_() [3/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | int | _rows,
|  | int | _cols,
|  | const _Tp & | value
| ) |  |

constructor that sets each matrix element to specified value

## ◆ Mat_() [4/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | Size | _size | ) |
| explicit

equivalent to Mat(_size, DataType<_Tp>::type)

## ◆ Mat_() [5/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | Size | _size,
|  | const _Tp & | value
| ) |  |

constructor that sets each matrix element to specified value

## ◆ Mat_() [6/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | int | _ndims,
|  | const int * | _sizes
| ) |  |

n-dim array constructor

## ◆ Mat_() [7/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | int | _ndims,
|  | const int * | _sizes,
|  | const _Tp & | value
| ) |  |

n-dim array constructor that sets each matrix element to specified value

## ◆ Mat_() [8/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | const Mat & | m | ) |

copy/conversion constructor. If m is of different type, it's converted

## ◆ Mat_() [9/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | const Mat_< _Tp > & | m | ) |

copy constructor

## ◆ Mat_() [10/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | int | _rows,
|  | int | _cols,
|  | _Tp * | _data,
|  | size_t | _step = `AUTO_STEP`
| ) |  |

constructs a matrix on top of user-allocated data. step is in bytes(!!!), regardless of the type

## ◆ Mat_() [11/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | int | _ndims,
|  | const int * | _sizes,
|  | _Tp * | _data,
|  | const size_t * | _steps = `0`
| ) |  |

constructs n-dim matrix on top of user-allocated data. steps are in bytes(!!!), regardless of the type

## ◆ Mat_() [12/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | const Mat_< _Tp > & | m,
|  | const Range & | rowRange,
|  | const Range & | colRange = `Range::all()`
| ) |  |

selects a submatrix

## ◆ Mat_() [13/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | const Mat_< _Tp > & | m,
|  | const Rect & | roi
| ) |  |

selects a submatrix

## ◆ Mat_() [14/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | const Mat_< _Tp > & | m,
|  | const Range * | ranges
| ) |  |

selects a submatrix, n-dim version

## ◆ Mat_() [15/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | const Mat_< _Tp > & | m,
|  | const std::vector< Range > & | ranges
| ) |  |

selects a submatrix, n-dim version

## ◆ Mat_() [16/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | const MatExpr & | e | ) |
| explicit

from a matrix expression

## ◆ Mat_() [17/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | const std::vector< _Tp > & | vec,
|  | bool | copyData = `false`
| ) |  |
| explicit

makes a matrix out of Vec, std::vector, Point_ or Point3_. The matrix will have a single column

## ◆ Mat_() [18/28]

template<typename _Tp>
template<int n>

cv::Mat_< _Tp >::Mat_ | ( | const Vec< typename DataType< _Tp >::channel_type, n > & | vec,
|  | bool | copyData = `true`
| ) |  |
| explicit

## ◆ Mat_() [19/28]

template<typename _Tp>
template<int m, int n>

cv::Mat_< _Tp >::Mat_ | ( | const Matx< typename DataType< _Tp >::channel_type, m, n > & | mtx,
|  | bool | copyData = `true`
| ) |  |
| explicit

## ◆ Mat_() [20/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | const Point_< typename DataType< _Tp >::channel_type > & | pt,
|  | bool | copyData = `true`
| ) |  |
| explicit

## ◆ Mat_() [21/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | const Point3_< typename DataType< _Tp >::channel_type > & | pt,
|  | bool | copyData = `true`
| ) |  |
| explicit

## ◆ Mat_() [22/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | const MatCommaInitializer_< _Tp > & | commaInitializer | ) |
| explicit

## ◆ Mat_() [23/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | std::initializer_list< _Tp > | values | ) |

## ◆ Mat_() [24/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | const std::initializer_list< int > | sizes,
|  | const std::initializer_list< _Tp > | values
| ) |  |
| explicit

## ◆ Mat_() [25/28]

template<typename _Tp>
template<std::size_t _Nm>

cv::Mat_< _Tp >::Mat_ | ( | const std::array< _Tp, _Nm > & | arr,
|  | bool | copyData = `false`
| ) |  |
| explicit

## ◆ Mat_() [26/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | Mat_< _Tp > && | m | ) |

## ◆ Mat_() [27/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | Mat && | m | ) |

## ◆ Mat_() [28/28]

template<typename _Tp>

cv::Mat_< _Tp >::Mat_ | ( | MatExpr && | e | ) |

## Member Function Documentation

## ◆ adjustROI()

template<typename _Tp>

Mat_& cv::Mat_< _Tp >::adjustROI | ( | int | dtop,
|  | int | dbottom,
|  | int | dleft,
|  | int | dright
| ) |  |

some more overridden methods

## ◆ begin() [1/2]

template<typename _Tp>

iterator cv::Mat_< _Tp >::begin | ( |  | ) |

iterators; they are smart enough to skip gaps in the end of rows

## ◆ begin() [2/2]

template<typename _Tp>

const_iterator cv::Mat_< _Tp >::begin | ( |  | ) | const

## ◆ channels()

template<typename _Tp>

int cv::Mat_< _Tp >::channels | ( |  | ) | const

## ◆ clone()

template<typename _Tp>

Mat_ cv::Mat_< _Tp >::clone | ( |  | ) | const

## ◆ col()

template<typename _Tp>

Mat_ cv::Mat_< _Tp >::col | ( | int | x | ) | const

## ◆ create() [1/3]

template<typename _Tp>

void cv::Mat_< _Tp >::create | ( | int | _rows,
|  | int | _cols
| ) |  |

equivalent to Mat::create(_rows, _cols, DataType<_Tp>::type)

## ◆ create() [2/3]

template<typename _Tp>

void cv::Mat_< _Tp >::create | ( | Size | _size | ) |

equivalent to Mat::create(_size, DataType<_Tp>::type)

## ◆ create() [3/3]

template<typename _Tp>

void cv::Mat_< _Tp >::create | ( | int | _ndims,
|  | const int * | _sizes
| ) |  |

equivalent to Mat::create(_ndims, _sizes, DatType<_Tp>::type)

## ◆ cross()

template<typename _Tp>

Mat_ cv::Mat_< _Tp >::cross | ( | const Mat_< _Tp > & | m | ) | const

cross-product

## ◆ depth()

template<typename _Tp>

int cv::Mat_< _Tp >::depth | ( |  | ) | const

## ◆ diag()

template<typename _Tp>

Mat_ cv::Mat_< _Tp >::diag | ( | int | d = `0` | ) | const

## ◆ elemSize()

template<typename _Tp>

size_t cv::Mat_< _Tp >::elemSize | ( |  | ) | const

overridden forms of Mat::elemSize() etc.

## ◆ elemSize1()

template<typename _Tp>

size_t cv::Mat_< _Tp >::elemSize1 | ( |  | ) | const

## ◆ end() [1/2]

template<typename _Tp>

iterator cv::Mat_< _Tp >::end | ( |  | ) |

## ◆ end() [2/2]

template<typename _Tp>

const_iterator cv::Mat_< _Tp >::end | ( |  | ) | const

## ◆ eye() [1/2]

template<typename _Tp>

static MatExpr cv::Mat_< _Tp >::eye | ( | int | rows,
|  | int | cols
| ) |  |
| static

Examples:
  samples/cpp/filestorage.cpp.

## ◆ eye() [2/2]

template<typename _Tp>

static MatExpr cv::Mat_< _Tp >::eye | ( | Size | size | ) |
| static

## ◆ forEach() [1/2]

template<typename _Tp>
template<typename Functor >

void cv::Mat_< _Tp >::forEach | ( | const Functor & | operation | ) |

template methods for for operation over all matrix elements.

## ◆ forEach() [2/2]

template<typename _Tp>
template<typename Functor >

void cv::Mat_< _Tp >::forEach | ( | const Functor & | operation | ) | const

## ◆ ones() [1/3]

template<typename _Tp>

static MatExpr cv::Mat_< _Tp >::ones | ( | int | rows,
|  | int | cols
| ) |  |
| static

## ◆ ones() [2/3]

template<typename _Tp>

static MatExpr cv::Mat_< _Tp >::ones | ( | Size | size | ) |
| static

## ◆ ones() [3/3]

template<typename _Tp>

static MatExpr cv::Mat_< _Tp >::ones | ( | int | _ndims,
|  | const int * | _sizes
| ) |  |
| static

## ◆ operator Mat_< T2 >()

template<typename _Tp>
template<typename T2 >

cv::Mat_< _Tp >::operator Mat_< T2 > | ( |  | ) | const

data type conversion

## ◆ operator Matx< typename DataType< _Tp >::channel_type, m, n >()

template<typename _Tp>
template<int m, int n>

cv::Mat_< _Tp >::operator Matx< typename DataType< _Tp >::channel_type, m, n > | ( |  | ) | const

conversion to Matx

## ◆ operator std::array< _Tp, _Nm >()

template<typename _Tp>
template<std::size_t _Nm>

cv::Mat_< _Tp >::operator std::array< _Tp, _Nm > | ( |  | ) | const

conversion to array.

## ◆ operator std::vector< _Tp >()

template<typename _Tp>

cv::Mat_< _Tp >::operator std::vector< _Tp > | ( |  | ) | const

conversion to vector.

## ◆ operator Vec< typename DataType< _Tp >::channel_type, n >()

template<typename _Tp>
template<int n>

cv::Mat_< _Tp >::operator Vec< typename DataType< _Tp >::channel_type, n > | ( |  | ) | const

conversion to Vec

## ◆ operator()() [1/16]

template<typename _Tp>

Mat_ cv::Mat_< _Tp >::operator() | ( | const Range & | rowRange,
|  | const Range & | colRange
| ) |  | const

## ◆ operator()() [2/16]

template<typename _Tp>

Mat_ cv::Mat_< _Tp >::operator() | ( | const Rect & | roi | ) | const

## ◆ operator()() [3/16]

template<typename _Tp>

Mat_ cv::Mat_< _Tp >::operator() | ( | const Range * | ranges | ) | const

## ◆ operator()() [4/16]

template<typename _Tp>

Mat_ cv::Mat_< _Tp >::operator() | ( | const std::vector< Range > & | ranges | ) | const

## ◆ operator()() [5/16]

template<typename _Tp>

_Tp& cv::Mat_< _Tp >::operator() | ( | const int * | idx | ) |

returns reference to the specified element

## ◆ operator()() [6/16]

template<typename _Tp>

const _Tp& cv::Mat_< _Tp >::operator() | ( | const int * | idx | ) | const

returns read-only reference to the specified element

## ◆ operator()() [7/16]

template<typename _Tp>
template<int n>

_Tp& cv::Mat_< _Tp >::operator() | ( | const Vec< int, n > & | idx | ) |

returns reference to the specified element

## ◆ operator()() [8/16]

template<typename _Tp>
template<int n>

const _Tp& cv::Mat_< _Tp >::operator() | ( | const Vec< int, n > & | idx | ) | const

returns read-only reference to the specified element

## ◆ operator()() [9/16]

template<typename _Tp>

_Tp& cv::Mat_< _Tp >::operator() | ( | int | idx0 | ) |

returns reference to the specified element (1D case)

## ◆ operator()() [10/16]

template<typename _Tp>

const _Tp& cv::Mat_< _Tp >::operator() | ( | int | idx0 | ) | const

returns read-only reference to the specified element (1D case)

## ◆ operator()() [11/16]

template<typename _Tp>

_Tp& cv::Mat_< _Tp >::operator() | ( | int | row,
|  | int | col
| ) |  |

returns reference to the specified element (2D case)

## ◆ operator()() [12/16]

template<typename _Tp>

const _Tp& cv::Mat_< _Tp >::operator() | ( | int | row,
|  | int | col
| ) |  | const

returns read-only reference to the specified element (2D case)

## ◆ operator()() [13/16]

template<typename _Tp>

_Tp& cv::Mat_< _Tp >::operator() | ( | int | idx0,
|  | int | idx1,
|  | int | idx2
| ) |  |

returns reference to the specified element (3D case)

## ◆ operator()() [14/16]

template<typename _Tp>

const _Tp& cv::Mat_< _Tp >::operator() | ( | int | idx0,
|  | int | idx1,
|  | int | idx2
| ) |  | const

returns read-only reference to the specified element (3D case)

## ◆ operator()() [15/16]

template<typename _Tp>

_Tp& cv::Mat_< _Tp >::operator() | ( | Point | pt | ) |

## ◆ operator()() [16/16]

template<typename _Tp>

const _Tp& cv::Mat_< _Tp >::operator() | ( | Point | pt | ) | const

## ◆ operator=() [1/6]

template<typename _Tp>

Mat_& cv::Mat_< _Tp >::operator= | ( | const Mat & | m | ) |

## ◆ operator=() [2/6]

template<typename _Tp>

Mat_& cv::Mat_< _Tp >::operator= | ( | const Mat_< _Tp > & | m | ) |

## ◆ operator=() [3/6]

template<typename _Tp>

Mat_& cv::Mat_< _Tp >::operator= | ( | const _Tp & | s | ) |

set all the elements to s.

## ◆ operator=() [4/6]

template<typename _Tp>

Mat_& cv::Mat_< _Tp >::operator= | ( | const MatExpr & | e | ) |

assign a matrix expression

## ◆ operator=() [5/6]

template<typename _Tp>

Mat_& cv::Mat_< _Tp >::operator= | ( | Mat_< _Tp > && | m | ) |

## ◆ operator=() [6/6]

template<typename _Tp>

Mat_& cv::Mat_< _Tp >::operator= | ( | Mat && | m | ) |

## ◆ operator[]() [1/2]

template<typename _Tp>

_Tp* cv::Mat_< _Tp >::operator[] | ( | int | y | ) |

more convenient forms of row and element access operators

## ◆ operator[]() [2/2]

template<typename _Tp>

const _Tp* cv::Mat_< _Tp >::operator[] | ( | int | y | ) | const

## ◆ release()

template<typename _Tp>

void cv::Mat_< _Tp >::release | ( |  | ) |

equivalent to Mat::release()

## ◆ row()

template<typename _Tp>

Mat_ cv::Mat_< _Tp >::row | ( | int | y | ) | const

overridden forms of Mat::row() etc.

## ◆ step1()

template<typename _Tp>

size_t cv::Mat_< _Tp >::step1 | ( | int | i = `0` | ) | const

## ◆ stepT()

template<typename _Tp>

size_t cv::Mat_< _Tp >::stepT | ( | int | i = `0` | ) | const

returns step()/sizeof(_Tp)

## ◆ type()

template<typename _Tp>

int cv::Mat_< _Tp >::type | ( |  | ) | const

## ◆ zeros() [1/3]

template<typename _Tp>

static MatExpr cv::Mat_< _Tp >::zeros | ( | int | rows,
|  | int | cols
| ) |  |
| static

overridden forms of Mat::zeros() etc. Data type is omitted, of course

Examples:
  samples/cpp/filestorage.cpp.

## ◆ zeros() [2/3]

template<typename _Tp>

static MatExpr cv::Mat_< _Tp >::zeros | ( | Size | size | ) |
| static

## ◆ zeros() [3/3]

template<typename _Tp>

static MatExpr cv::Mat_< _Tp >::zeros | ( | int | _ndims,
|  | const int * | _sizes
| ) |  |
| static

The documentation for this class was generated from the following file:

- opencv2/core/mat.hpp