Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions
cv::Mat_< _Tp > Class Template Reference

Template matrix class derived from Mat. More...

#include <core.hpp>

Inherits cv::Mat.

List of all members.

Public Types

typedef _Tp value_type
typedef DataType< _Tp >
::channel_type 
channel_type
typedef MatIterator_< _Tp > iterator
typedef MatConstIterator_< _Tp > const_iterator
enum  { MAGIC_VAL = 0x42FF0000, AUTO_STEP = 0, CONTINUOUS_FLAG = CV_MAT_CONT_FLAG, SUBMATRIX_FLAG = CV_SUBMAT_FLAG }

Public Member Functions

 Mat_ ()
 default constructor
 Mat_ (int _rows, int _cols)
 equivalent to Mat(_rows, _cols, DataType<_Tp>::type)
 Mat_ (int _rows, int _cols, const _Tp &value)
 constructor that sets each matrix element to specified value
 Mat_ (Size _size)
 equivalent to Mat(_size, DataType<_Tp>::type)
 Mat_ (Size _size, const _Tp &value)
 constructor that sets each matrix element to specified value
 Mat_ (int _ndims, const int *_sizes)
 n-dim array constructor
 Mat_ (int _ndims, const int *_sizes, const _Tp &value)
 n-dim array constructor that sets each matrix element to specified value
 Mat_ (const Mat &m)
 copy/conversion contructor. If m is of different type, it's converted
 Mat_ (const Mat_ &m)
 copy constructor
 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_ (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_ (const Mat_ &m, const Range &rowRange, const Range &colRange=Range::all())
 selects a submatrix
 Mat_ (const Mat_ &m, const Rect &roi)
 selects a submatrix
 Mat_ (const Mat_ &m, const Range *ranges)
 selects a submatrix, n-dim version
 Mat_ (const MatExpr &e)
 from a matrix expression
 Mat_ (const vector< _Tp > &vec, bool copyData=false)
 makes a matrix out of Vec, std::vector, Point_ or Point3_. The matrix will have a single column
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_operator= (const Mat &m)
 assignment operators
Mat_operator= (const Mat_ &m)
Mat_operator= (const _Tp &s)
 set all the elements to s.
Mat_operator= (const MatExpr &e)
 assign a matrix expression
iterator begin ()
 iterators; they are smart enough to skip gaps in the end of rows
iterator end ()
const_iterator begin () const
const_iterator end () const
void create (int _rows, int _cols)
 equivalent to Mat::create(_rows, _cols, DataType<_Tp>::type)
void create (Size _size)
 equivalent to Mat::create(_size, DataType<_Tp>::type)
void create (int _ndims, const int *_sizes)
 equivalent to Mat::create(_ndims, _sizes, DatType<_Tp>::type)
Mat_ cross (const Mat_ &m) const
 cross-product
template<typename T2 >
 operator Mat_< T2 > () const
 data type conversion
Mat_ row (int y) const
 overridden forms of Mat::row() etc.
Mat_ col (int x) const
 returns a new matrix header for the specified column
Mat_ diag (int d=0) const
 ... for the specified diagonal
Mat_ clone () const
 returns deep copy of the matrix, i.e. the data is copied
size_t elemSize () const
 overridden forms of Mat::elemSize() etc.
size_t elemSize1 () const
 returns the size of element channel in bytes.
int type () const
 returns element type, similar to CV_MAT_TYPE(cvmat->type)
int depth () const
 returns element type, similar to CV_MAT_DEPTH(cvmat->type)
int channels () const
 returns element type, similar to CV_MAT_CN(cvmat->type)
size_t step1 (int i=0) const
 returns step/elemSize1()
size_t stepT (int i=0) const
 returns step()/sizeof(_Tp)
Mat_adjustROI (int dtop, int dbottom, int dleft, int dright)
 some more overriden methods
Mat_ operator() (const Range &rowRange, const Range &colRange) const
Mat_ operator() (const Rect &roi) const
Mat_ operator() (const Range *ranges) const
_Tp * operator[] (int y)
 more convenient forms of row and element access operators
const _Tp * operator[] (int y) const
_Tp & operator() (const int *idx)
 returns reference to the specified element
const _Tp & operator() (const int *idx) const
 returns read-only reference to the specified element
template<int n>
_Tp & operator() (const Vec< int, n > &idx)
 returns reference to the specified element
template<int n>
const _Tp & operator() (const Vec< int, n > &idx) const
 returns read-only reference to the specified element
_Tp & operator() (int idx0)
 returns reference to the specified element (1D case)
const _Tp & operator() (int idx0) const
 returns read-only reference to the specified element (1D case)
_Tp & operator() (int idx0, int idx1)
 returns reference to the specified element (2D case)
const _Tp & operator() (int idx0, int idx1) const
 returns read-only reference to the specified element (2D case)
_Tp & operator() (int idx0, int idx1, int idx2)
 returns reference to the specified element (3D case)
const _Tp & operator() (int idx0, int idx1, int idx2) const
 returns read-only reference to the specified element (3D case)
_Tp & operator() (Point pt)
const _Tp & operator() (Point pt) const
 operator vector< _Tp > () const
 conversion to vector.
template<int n>
 operator Vec< typename DataType< _Tp >::channel_type, n > () const
 conversion to Vec
template<int m, int n>
 operator Matx< typename DataType< _Tp >::channel_type, m, n > () const
 conversion to Matx
Mat rowRange (int startrow, int endrow) const
 ... for the specified row span
Mat rowRange (const Range &r) const
Mat colRange (int startcol, int endcol) const
 ... for the specified column span
Mat colRange (const Range &r) const
void copyTo (OutputArray m) const
 copies the matrix content to "m".
void copyTo (OutputArray m, InputArray mask) const
 copies those matrix elements to "m" that are marked with non-zero mask elements.
void convertTo (OutputArray m, int rtype, double alpha=1, double beta=0) const
 converts matrix to another datatype with optional scalng. See cvConvertScale.
void assignTo (Mat &m, int type=-1) const
MatsetTo (InputArray value, InputArray mask=noArray())
 sets some of the matrix elements to s, according to the mask
Mat reshape (int cn, int rows=0) const
 creates alternative matrix header for the same data, with different
Mat reshape (int cn, int newndims, const int *newsz) const
MatExpr t () const
 matrix transposition by means of matrix expressions
MatExpr inv (int method=DECOMP_LU) const
 matrix inversion by means of matrix expressions
MatExpr mul (InputArray m, double scale=1) const
 per-element matrix multiplication by means of matrix expressions
Mat cross (InputArray m) const
 computes cross-product of 2 3D vectors
double dot (InputArray m) const
 computes dot-product
void create (int rows, int cols, int type)
 allocates new matrix data unless the matrix already has specified size and type.
void create (Size size, int type)
void create (int ndims, const int *sizes, int type)
void addref ()
 increases the reference counter; use with care to avoid memleaks
void release ()
 decreases reference counter;
void deallocate ()
 deallocates the matrix data
void copySize (const Mat &m)
 internal use function; properly re-allocates _size, _step arrays
void reserve (size_t sz)
 reserves enough space to fit sz hyper-planes
void resize (size_t sz)
 resizes matrix to the specified number of hyper-planes
void resize (size_t sz, const Scalar &s)
 resizes matrix to the specified number of hyper-planes; initializes the newly added elements
void push_back_ (const void *elem)
 internal function
template<typename _Tp >
void push_back (const _Tp &elem)
 adds element to the end of 1d matrix (or possibly multiple elements when _Tp=Mat)
template<typename _Tp >
void push_back (const Mat_< _Tp > &elem)
void push_back (const Mat &m)
void pop_back (size_t nelems=1)
 removes several hyper-planes from bottom of the matrix
void locateROI (Size &wholeSize, Point &ofs) const
 locates matrix header within a parent matrix. See below
Mat operator() (Range rowRange, Range colRange) const
 extracts a rectangular sub-matrix
 operator CvMat () const
 converts header to CvMat; no data is copied
 operator CvMatND () const
 converts header to CvMatND; no data is copied
 operator IplImage () const
 converts header to IplImage; no data is copied
template<typename _Tp , int n>
 operator Vec< _Tp, n > () const
template<typename _Tp , int m, int n>
 operator Matx< _Tp, m, n > () const
bool isContinuous () const
 returns true iff the matrix data is continuous
bool isSubmatrix () const
 returns true if the matrix is a submatrix of another matrix
bool empty () const
 returns true if matrix data is NULL
size_t total () const
 returns the total number of matrix elements
int checkVector (int elemChannels, int depth=-1, bool requireContinuous=true) const
 returns N if the matrix is 1-channel (N x ptdim) or ptdim-channel (1 x N) or (N x 1); negative number otherwise
ucharptr (int i0=0)
 returns pointer to i0-th submatrix along the dimension #0
const ucharptr (int i0=0) const
ucharptr (int i0, int i1)
 returns pointer to (i0,i1) submatrix along the dimensions #0 and #1
const ucharptr (int i0, int i1) const
ucharptr (int i0, int i1, int i2)
 returns pointer to (i0,i1,i3) submatrix along the dimensions #0, #1, #2
const ucharptr (int i0, int i1, int i2) const
ucharptr (const int *idx)
 returns pointer to the matrix element
const ucharptr (const int *idx) const
 returns read-only pointer to the matrix element
template<int n>
ucharptr (const Vec< int, n > &idx)
template<int n>
const ucharptr (const Vec< int, n > &idx) const
template<typename _Tp >
_Tp * ptr (int i0=0)
 template version of the above method
template<typename _Tp >
const _Tp * ptr (int i0=0) const
template<typename _Tp >
_Tp * ptr (int i0, int i1)
template<typename _Tp >
const _Tp * ptr (int i0, int i1) 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 >
_Tp & at (int i0=0)
 the same as above, with the pointer dereferencing
template<typename _Tp >
const _Tp & at (int i0=0) const
template<typename _Tp >
_Tp & at (int i0, int i1)
template<typename _Tp >
const _Tp & at (int i0, int i1) 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)
 special versions for 2D arrays (especially convenient for referencing image pixels)
template<typename _Tp >
const _Tp & at (Point pt) const

Static Public Member Functions

static MatExpr zeros (int rows, int cols)
 overridden forms of Mat::zeros() etc. Data type is omitted, of course
static MatExpr zeros (Size size)
static MatExpr zeros (int _ndims, const int *_sizes)
static MatExpr ones (int rows, int cols)
static MatExpr ones (Size size)
static MatExpr ones (int _ndims, const int *_sizes)
static MatExpr eye (int rows, int cols)
static MatExpr eye (Size size)
static Mat diag (const Mat &d)
 constructs a square diagonal matrix which main diagonal is vector "d"
static MatExpr zeros (int rows, int cols, int type)
 Matlab-style matrix initialization.
static MatExpr zeros (Size size, int type)
static MatExpr zeros (int ndims, const int *sz, int type)
static MatExpr ones (int rows, int cols, int type)
static MatExpr ones (Size size, int type)
static MatExpr ones (int ndims, const int *sz, int type)
static MatExpr eye (int rows, int cols, int type)
static MatExpr eye (Size size, int type)

Public Attributes

int flags
 includes several bit-fields:
int dims
 the matrix dimensionality, >= 2
int rows
 the number of rows and columns or (-1, -1) when the matrix has more than 2 dimensions
int cols
uchardata
 pointer to the data
int * refcount
 pointer to the reference counter;
uchardatastart
 helper fields used in locateROI and adjustROI
uchardataend
uchardatalimit
MatAllocatorallocator
 custom allocator
MSize size
MStep step

Protected Member Functions

void initEmpty ()

Detailed Description

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

Template matrix class derived from Mat.

The class Mat_ is a "thin" template wrapper on top of cv::Mat. It does not have any extra data fields, nor it or cv::Mat have any virtual methods and thus references or pointers to these two classes can be safely converted one to another. But do it with care, for example:

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

While cv::Mat is sufficient in most cases, cv::Mat_ can be more convenient if you use a lot of element access operations and if you know matrix type at compile time. Note that cv::Mat::at<Tp>(int y, int x) and cv::Mat<_Tp>::operator ()(int y, int x) do absolutely the same thing 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);

It is easy to use Mat_ for multi-channel images/matrices - just pass cv::Vec as cv::Mat_ template parameter:

 // allocate 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 modify 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); // img(y,x)[c] accesses c-th channel of the pixel (x,y)

Member Typedef Documentation

template<typename _Tp>
typedef _Tp cv::Mat_< _Tp >::value_type
template<typename _Tp>
typedef DataType<_Tp>::channel_type cv::Mat_< _Tp >::channel_type
template<typename _Tp>
typedef MatIterator_<_Tp> cv::Mat_< _Tp >::iterator
template<typename _Tp>
typedef MatConstIterator_<_Tp> cv::Mat_< _Tp >::const_iterator

Member Enumeration Documentation

anonymous enum [inherited]
Enumerator:
MAGIC_VAL 
AUTO_STEP 
CONTINUOUS_FLAG 
SUBMATRIX_FLAG 

Constructor & Destructor Documentation

template<typename _Tp >
cv::Mat_< _Tp >::Mat_ ( )

default constructor

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

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

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

constructor that sets each matrix element to specified value

template<typename _Tp>
cv::Mat_< _Tp >::Mat_ ( Size  _size) [explicit]

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

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

constructor that sets each matrix element to specified value

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

n-dim array constructor

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

template<typename _Tp>
cv::Mat_< _Tp >::Mat_ ( const Mat m)

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

template<typename _Tp>
cv::Mat_< _Tp >::Mat_ ( const Mat_< _Tp > &  m)

copy constructor

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

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

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

selects a submatrix

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

selects a submatrix

template<typename _Tp>
cv::Mat_< _Tp >::Mat_ ( const Mat_< _Tp > &  m,
const Range ranges 
)

selects a submatrix, n-dim version

template<typename _Tp>
cv::Mat_< _Tp >::Mat_ ( const MatExpr e) [explicit]

from a matrix expression

template<typename _Tp>
cv::Mat_< _Tp >::Mat_ ( const 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

template<typename _Tp>
template<int n>
cv::Mat_< _Tp >::Mat_ ( const Vec< typename DataType< _Tp >::channel_type, n > &  vec,
bool  copyData = true 
) [explicit]
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]
template<typename _Tp>
cv::Mat_< _Tp >::Mat_ ( const Point_< typename DataType< _Tp >::channel_type > &  pt,
bool  copyData = true 
) [explicit]
template<typename _Tp>
cv::Mat_< _Tp >::Mat_ ( const Point3_< typename DataType< _Tp >::channel_type > &  pt,
bool  copyData = true 
) [explicit]
template<typename _Tp>
cv::Mat_< _Tp >::Mat_ ( const MatCommaInitializer_< _Tp > &  commaInitializer) [explicit]

Member Function Documentation

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

assignment operators

Reimplemented from cv::Mat.

template<typename _Tp >
Mat_< _Tp > & cv::Mat_< _Tp >::operator= ( const Mat_< _Tp > &  m)
template<typename _Tp>
Mat_< _Tp > & cv::Mat_< _Tp >::operator= ( const _Tp &  s)

set all the elements to s.

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

assign a matrix expression

Reimplemented from cv::Mat.

template<typename _Tp >
MatIterator_< _Tp > cv::Mat_< _Tp >::begin ( )

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

Reimplemented from cv::Mat.

template<typename _Tp >
MatIterator_< _Tp > cv::Mat_< _Tp >::end ( )

Reimplemented from cv::Mat.

template<typename _Tp >
MatConstIterator_< _Tp > cv::Mat_< _Tp >::begin ( ) const

Reimplemented from cv::Mat.

template<typename _Tp >
MatConstIterator_< _Tp > cv::Mat_< _Tp >::end ( ) const

Reimplemented from cv::Mat.

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

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

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

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

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

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

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

cross-product

template<typename _Tp >
template<typename T2 >
cv::Mat_< _Tp >::operator Mat_< T2 > ( ) const

data type conversion

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

overridden forms of Mat::row() etc.

Reimplemented from cv::Mat.

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

returns a new matrix header for the specified column

Reimplemented from cv::Mat.

template<typename _Tp >
Mat_< _Tp > cv::Mat_< _Tp >::diag ( int  d = 0) const

... for the specified diagonal

Reimplemented from cv::Mat.

template<typename _Tp >
Mat_< _Tp > cv::Mat_< _Tp >::clone ( ) const

returns deep copy of the matrix, i.e. the data is copied

Reimplemented from cv::Mat.

template<typename _Tp >
size_t cv::Mat_< _Tp >::elemSize ( ) const

overridden forms of Mat::elemSize() etc.

Reimplemented from cv::Mat.

template<typename _Tp >
size_t cv::Mat_< _Tp >::elemSize1 ( ) const

returns the size of element channel in bytes.

Reimplemented from cv::Mat.

template<typename _Tp >
int cv::Mat_< _Tp >::type ( ) const

returns element type, similar to CV_MAT_TYPE(cvmat->type)

Reimplemented from cv::Mat.

template<typename _Tp >
int cv::Mat_< _Tp >::depth ( ) const

returns element type, similar to CV_MAT_DEPTH(cvmat->type)

Reimplemented from cv::Mat.

template<typename _Tp >
int cv::Mat_< _Tp >::channels ( ) const

returns element type, similar to CV_MAT_CN(cvmat->type)

Reimplemented from cv::Mat.

template<typename _Tp >
size_t cv::Mat_< _Tp >::step1 ( int  i = 0) const

returns step/elemSize1()

Reimplemented from cv::Mat.

template<typename _Tp >
size_t cv::Mat_< _Tp >::stepT ( int  i = 0) const

returns step()/sizeof(_Tp)

template<typename _Tp >
MatExpr cv::Mat_< _Tp >::zeros ( int  rows,
int  cols 
) [static]

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

template<typename _Tp >
MatExpr cv::Mat_< _Tp >::zeros ( Size  size) [static]
template<typename _Tp>
static MatExpr cv::Mat_< _Tp >::zeros ( int  _ndims,
const int *  _sizes 
) [static]
template<typename _Tp >
MatExpr cv::Mat_< _Tp >::ones ( int  rows,
int  cols 
) [static]
template<typename _Tp >
MatExpr cv::Mat_< _Tp >::ones ( Size  size) [static]
template<typename _Tp>
static MatExpr cv::Mat_< _Tp >::ones ( int  _ndims,
const int *  _sizes 
) [static]
template<typename _Tp >
MatExpr cv::Mat_< _Tp >::eye ( int  rows,
int  cols 
) [static]
template<typename _Tp >
MatExpr cv::Mat_< _Tp >::eye ( Size  size) [static]
template<typename _Tp >
Mat_< _Tp > & cv::Mat_< _Tp >::adjustROI ( int  dtop,
int  dbottom,
int  dleft,
int  dright 
)

some more overriden methods

Reimplemented from cv::Mat.

template<typename _Tp >
Mat_< _Tp > cv::Mat_< _Tp >::operator() ( const Range rowRange,
const Range colRange 
) const
template<typename _Tp >
Mat_< _Tp > cv::Mat_< _Tp >::operator() ( const Rect roi) const

Reimplemented from cv::Mat.

template<typename _Tp >
Mat_< _Tp > cv::Mat_< _Tp >::operator() ( const Range ranges) const

Reimplemented from cv::Mat.

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

more convenient forms of row and element access operators

template<typename _Tp >
const _Tp * cv::Mat_< _Tp >::operator[] ( int  y) const
template<typename _Tp >
_Tp & cv::Mat_< _Tp >::operator() ( const int *  idx)

returns reference to the specified element

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

returns read-only reference to the specified element

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

returns reference to the specified element

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

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

returns reference to the specified element (1D case)

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

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

template<typename _Tp >
_Tp & cv::Mat_< _Tp >::operator() ( int  idx0,
int  idx1 
)

returns reference to the specified element (2D case)

template<typename _Tp >
const _Tp & cv::Mat_< _Tp >::operator() ( int  idx0,
int  idx1 
) const

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

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

returns reference to the specified element (3D case)

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)

template<typename _Tp >
_Tp & cv::Mat_< _Tp >::operator() ( Point  pt)
template<typename _Tp >
const _Tp & cv::Mat_< _Tp >::operator() ( Point  pt) const
template<typename _Tp >
cv::Mat_< _Tp >::operator vector< _Tp > ( ) const

conversion to vector.

Reimplemented from cv::Mat.

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

conversion to Vec

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

conversion to Matx

Mat cv::Mat::rowRange ( int  startrow,
int  endrow 
) const [inherited]

... for the specified row span

Mat cv::Mat::rowRange ( const Range r) const [inherited]
Mat cv::Mat::colRange ( int  startcol,
int  endcol 
) const [inherited]

... for the specified column span

Mat cv::Mat::colRange ( const Range r) const [inherited]
Mat cv::Mat::diag ( const Mat d) [static, inherited]

constructs a square diagonal matrix which main diagonal is vector "d"

void cv::Mat::copyTo ( OutputArray  m) const [inherited]

copies the matrix content to "m".

void cv::Mat::copyTo ( OutputArray  m,
InputArray  mask 
) const [inherited]

copies those matrix elements to "m" that are marked with non-zero mask elements.

void cv::Mat::convertTo ( OutputArray  m,
int  rtype,
double  alpha = 1,
double  beta = 0 
) const [inherited]

converts matrix to another datatype with optional scalng. See cvConvertScale.

void cv::Mat::assignTo ( Mat m,
int  type = -1 
) const [inherited]
Mat& cv::Mat::setTo ( InputArray  value,
InputArray  mask = noArray() 
) [inherited]

sets some of the matrix elements to s, according to the mask

Mat cv::Mat::reshape ( int  cn,
int  rows = 0 
) const [inherited]

creates alternative matrix header for the same data, with different

Mat cv::Mat::reshape ( int  cn,
int  newndims,
const int *  newsz 
) const [inherited]
MatExpr cv::Mat::t ( ) const [inherited]

matrix transposition by means of matrix expressions

MatExpr cv::Mat::inv ( int  method = DECOMP_LU) const [inherited]

matrix inversion by means of matrix expressions

MatExpr cv::Mat::mul ( InputArray  m,
double  scale = 1 
) const [inherited]

per-element matrix multiplication by means of matrix expressions

Mat cv::Mat::cross ( InputArray  m) const [inherited]

computes cross-product of 2 3D vectors

double cv::Mat::dot ( InputArray  m) const [inherited]

computes dot-product

static MatExpr cv::Mat::zeros ( int  rows,
int  cols,
int  type 
) [static, inherited]

Matlab-style matrix initialization.

static MatExpr cv::Mat::zeros ( Size  size,
int  type 
) [static, inherited]
static MatExpr cv::Mat::zeros ( int  ndims,
const int *  sz,
int  type 
) [static, inherited]
static MatExpr cv::Mat::ones ( int  rows,
int  cols,
int  type 
) [static, inherited]
static MatExpr cv::Mat::ones ( Size  size,
int  type 
) [static, inherited]
static MatExpr cv::Mat::ones ( int  ndims,
const int *  sz,
int  type 
) [static, inherited]
static MatExpr cv::Mat::eye ( int  rows,
int  cols,
int  type 
) [static, inherited]
static MatExpr cv::Mat::eye ( Size  size,
int  type 
) [static, inherited]
void cv::Mat::create ( int  rows,
int  cols,
int  type 
) [inherited]

allocates new matrix data unless the matrix already has specified size and type.

void cv::Mat::create ( Size  size,
int  type 
) [inherited]
void cv::Mat::create ( int  ndims,
const int *  sizes,
int  type 
) [inherited]
void cv::Mat::addref ( ) [inherited]

increases the reference counter; use with care to avoid memleaks

void cv::Mat::release ( ) [inherited]

decreases reference counter;

void cv::Mat::deallocate ( ) [inherited]

deallocates the matrix data

void cv::Mat::copySize ( const Mat m) [inherited]

internal use function; properly re-allocates _size, _step arrays

void cv::Mat::reserve ( size_t  sz) [inherited]

reserves enough space to fit sz hyper-planes

void cv::Mat::resize ( size_t  sz) [inherited]

resizes matrix to the specified number of hyper-planes

void cv::Mat::resize ( size_t  sz,
const Scalar s 
) [inherited]

resizes matrix to the specified number of hyper-planes; initializes the newly added elements

void cv::Mat::push_back_ ( const void elem) [inherited]

internal function

template<typename _Tp >
void cv::Mat::push_back ( const _Tp &  elem) [inherited]

adds element to the end of 1d matrix (or possibly multiple elements when _Tp=Mat)

template<typename _Tp >
void cv::Mat::push_back ( const Mat_< _Tp > &  elem) [inherited]
void cv::Mat::push_back ( const Mat m) [inherited]
void cv::Mat::pop_back ( size_t  nelems = 1) [inherited]

removes several hyper-planes from bottom of the matrix

void cv::Mat::locateROI ( Size wholeSize,
Point ofs 
) const [inherited]

locates matrix header within a parent matrix. See below

Mat cv::Mat::operator() ( Range  rowRange,
Range  colRange 
) const [inherited]

extracts a rectangular sub-matrix

cv::Mat::operator CvMat ( ) const [inherited]

converts header to CvMat; no data is copied

cv::Mat::operator CvMatND ( ) const [inherited]

converts header to CvMatND; no data is copied

cv::Mat::operator IplImage ( ) const [inherited]

converts header to IplImage; no data is copied

template<typename _Tp , int n>
cv::Mat::operator Vec< _Tp, n > ( ) const [inherited]
template<typename _Tp , int m, int n>
cv::Mat::operator Matx< _Tp, m, n > ( ) const [inherited]
bool cv::Mat::isContinuous ( ) const [inherited]

returns true iff the matrix data is continuous

bool cv::Mat::isSubmatrix ( ) const [inherited]

returns true if the matrix is a submatrix of another matrix

bool cv::Mat::empty ( ) const [inherited]

returns true if matrix data is NULL

size_t cv::Mat::total ( ) const [inherited]

returns the total number of matrix elements

int cv::Mat::checkVector ( int  elemChannels,
int  depth = -1,
bool  requireContinuous = true 
) const [inherited]

returns N if the matrix is 1-channel (N x ptdim) or ptdim-channel (1 x N) or (N x 1); negative number otherwise

_Tp * cv::Mat::ptr ( int  i0 = 0) [inherited]

returns pointer to i0-th submatrix along the dimension #0

const _Tp * cv::Mat::ptr ( int  i0 = 0) const [inherited]
_Tp * cv::Mat::ptr ( int  i0,
int  i1 
) [inherited]

returns pointer to (i0,i1) submatrix along the dimensions #0 and #1

const _Tp * cv::Mat::ptr ( int  i0,
int  i1 
) const [inherited]
_Tp * cv::Mat::ptr ( int  i0,
int  i1,
int  i2 
) [inherited]

returns pointer to (i0,i1,i3) submatrix along the dimensions #0, #1, #2

const _Tp * cv::Mat::ptr ( int  i0,
int  i1,
int  i2 
) const [inherited]
uchar * cv::Mat::ptr ( const int *  idx) [inherited]

returns pointer to the matrix element

const uchar * cv::Mat::ptr ( const int *  idx) const [inherited]

returns read-only pointer to the matrix element

template<int n>
uchar* cv::Mat::ptr ( const Vec< int, n > &  idx) [inherited]
template<int n>
const uchar* cv::Mat::ptr ( const Vec< int, n > &  idx) const [inherited]
template<typename _Tp >
_Tp* cv::Mat::ptr ( int  i0 = 0) [inherited]

template version of the above method

template<typename _Tp >
const _Tp* cv::Mat::ptr ( int  i0 = 0) const [inherited]
template<typename _Tp >
_Tp* cv::Mat::ptr ( int  i0,
int  i1 
) [inherited]
template<typename _Tp >
const _Tp* cv::Mat::ptr ( int  i0,
int  i1 
) const [inherited]
template<typename _Tp >
_Tp* cv::Mat::ptr ( int  i0,
int  i1,
int  i2 
) [inherited]
template<typename _Tp >
const _Tp* cv::Mat::ptr ( int  i0,
int  i1,
int  i2 
) const [inherited]
template<typename _Tp >
_Tp* cv::Mat::ptr ( const int *  idx) [inherited]
template<typename _Tp >
const _Tp* cv::Mat::ptr ( const int *  idx) const [inherited]
template<typename _Tp , int n>
_Tp* cv::Mat::ptr ( const Vec< int, n > &  idx) [inherited]
template<typename _Tp , int n>
const _Tp* cv::Mat::ptr ( const Vec< int, n > &  idx) const [inherited]
template<typename _Tp >
_Tp & cv::Mat::at ( int  i0 = 0) [inherited]

the same as above, with the pointer dereferencing

template<typename _Tp >
const _Tp & cv::Mat::at ( int  i0 = 0) const [inherited]
template<typename _Tp >
_Tp & cv::Mat::at ( int  i0,
int  i1 
) [inherited]
template<typename _Tp >
const _Tp & cv::Mat::at ( int  i0,
int  i1 
) const [inherited]
template<typename _Tp >
_Tp & cv::Mat::at ( int  i0,
int  i1,
int  i2 
) [inherited]
template<typename _Tp >
const _Tp & cv::Mat::at ( int  i0,
int  i1,
int  i2 
) const [inherited]
template<typename _Tp >
_Tp & cv::Mat::at ( const int *  idx) [inherited]
template<typename _Tp >
const _Tp & cv::Mat::at ( const int *  idx) const [inherited]
template<typename _Tp , int n>
_Tp & cv::Mat::at ( const Vec< int, n > &  idx) [inherited]
template<typename _Tp , int n>
const _Tp & cv::Mat::at ( const Vec< int, n > &  idx) const [inherited]
template<typename _Tp >
_Tp & cv::Mat::at ( Point  pt) [inherited]

special versions for 2D arrays (especially convenient for referencing image pixels)

template<typename _Tp >
const _Tp & cv::Mat::at ( Point  pt) const [inherited]
void cv::Mat::initEmpty ( ) [protected, inherited]

Member Data Documentation

int cv::Mat::flags [inherited]

includes several bit-fields:

  • the magic signature
  • continuity flag
  • depth
  • number of channels
int cv::Mat::dims [inherited]

the matrix dimensionality, >= 2

int cv::Mat::rows [inherited]

the number of rows and columns or (-1, -1) when the matrix has more than 2 dimensions

int cv::Mat::cols [inherited]
uchar* cv::Mat::data [inherited]

pointer to the data

int* cv::Mat::refcount [inherited]

pointer to the reference counter;

uchar* cv::Mat::datastart [inherited]

helper fields used in locateROI and adjustROI

uchar* cv::Mat::dataend [inherited]
uchar* cv::Mat::datalimit [inherited]

custom allocator

MSize cv::Mat::size [inherited]
MStep cv::Mat::step [inherited]

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