Template matrix class derived from Mat. More...
#include <opencv2/core/mat.hpp>
Public Types | |
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 } |
typedef DataType< _Tp >::channel_type | channel_type |
typedef MatConstIterator_< _Tp > | const_iterator |
typedef MatIterator_< _Tp > | iterator |
typedef _Tp | value_type |
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) | |
void | addref () |
Increments the reference counter. More... | |
Mat_ & | adjustROI (int dtop, int dbottom, int dleft, int dright) |
some more overridden methods 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 |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename _Tp > | |
_Tp & | at (int row, int col) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename _Tp > | |
const _Tp & | at (int row, int col) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename _Tp > | |
_Tp & | at (int i0, int i1, int i2) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename _Tp > | |
const _Tp & | at (int i0, int i1, int i2) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename _Tp > | |
_Tp & | at (const int *idx) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename _Tp > | |
const _Tp & | at (const int *idx) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
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) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. special versions for 2D arrays (especially convenient for referencing image pixels) More... | |
template<typename _Tp > | |
const _Tp & | at (Point pt) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. special versions for 2D arrays (especially convenient for referencing image pixels) More... | |
iterator | begin () |
iterators; they are smart enough to skip gaps in the end of rows More... | |
const_iterator | begin () const |
int | channels () const |
int | checkVector (int elemChannels, int depth=-1, bool requireContinuous=true) const |
Mat_ | clone () const CV_NODISCARD |
Mat_ | col (int x) const |
Mat | colRange (int startcol, int endcol) const |
Creates a matrix header for the specified column span. More... | |
Mat | colRange (const Range &r) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
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 |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
void | create (int rows, int cols, int type) |
Allocates new array data if needed. More... | |
void | create (Size size, int type) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
void | create (int ndims, const int *sizes, int type) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
void | create (const std::vector< int > &sizes, int type) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
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 (InputArray m) const |
Computes a cross-product of two 3-element vectors. More... | |
Mat_ | cross (const Mat_ &m) const |
cross-product More... | |
void | deallocate () |
internal use function, consider to use 'release' method instead; deallocates the matrix data More... | |
int | depth () const |
Mat_ | diag (int d=0) const |
double | dot (InputArray m) const |
Computes a dot-product of two vectors. More... | |
size_t | elemSize () const |
overridden forms of Mat::elemSize() etc. More... | |
size_t | elemSize1 () const |
bool | empty () const |
Returns true if the array has no elements. More... | |
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 |
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 T2 > | |
operator Mat_< T2 > () const | |
data type conversion More... | |
template<typename _Tp , int m, int n> | |
operator Matx< _Tp, m, n > () const | |
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<typename _Tp , int n> | |
operator Vec< _Tp, n > () const | |
template<int n> | |
operator Vec< typename DataType< _Tp >::channel_type, n > () const | |
conversion to Vec More... | |
Mat | operator() (Range rowRange, Range colRange) const |
Extracts a rectangular submatrix. 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 | 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) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
const uchar * | ptr (int row, int col) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
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) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename _Tp > | |
const _Tp * | ptr (int row, int col) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
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) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
template<typename _Tp > | |
void | push_back (const std::vector< _Tp > &elem) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
void | push_back (const Mat &m) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
void | push_back_ (const void *elem) |
internal function More... | |
void | release () |
equivalent to Mat::release() 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) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
Mat_ | row (int y) const |
overridden forms of Mat::row() etc. More... | |
Mat | rowRange (int startrow, int endrow) const |
Creates a matrix header for the specified row span. More... | |
Mat | rowRange (const Range &r) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
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 |
size_t | stepT (int i=0) const |
returns step()/sizeof(_Tp) 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 |
void | updateContinuityFlag () |
internal use method: updates the continuity flag More... | |
Static Public Member Functions | |
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) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
static MatExpr | eye (int rows, int cols) |
static MatExpr | eye (Size size) |
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) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
static MatExpr | ones (int ndims, const int *sz, int type) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
static MatExpr | ones (int rows, int cols) |
static MatExpr | ones (Size size) |
static MatExpr | ones (int _ndims, const int *_sizes) |
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) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
static MatExpr | zeros (int ndims, const int *sz, int type) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
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) |
Public Attributes | |
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 |
includes several bit-fields: More... | |
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 | |
template<typename _Tp , typename Functor > | |
void | forEach_impl (const Functor &operation) |
Template matrix class derived from Mat.
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:
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:
To use Mat_ for multi-channel images/matrices, pass Vec as a Mat_ parameter:
Mat_ is fully compatible with C++11 range-based for loop. For example such loop can be used to safely apply look-up table:
typedef DataType<_Tp>::channel_type cv::Mat_< _Tp >::channel_type |
typedef MatConstIterator_<_Tp> cv::Mat_< _Tp >::const_iterator |
typedef MatIterator_<_Tp> cv::Mat_< _Tp >::iterator |
typedef _Tp cv::Mat_< _Tp >::value_type |
equivalent to Mat(_rows, _cols, DataType<_Tp>::type)
constructor that sets each matrix element to specified value
equivalent to Mat(_size, DataType<_Tp>::type)
constructor that sets each matrix element to specified value
n-dim array constructor
n-dim array constructor that sets each matrix element to specified value
copy/conversion constructor. If m is of different type, it's converted
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
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
cv::Mat_< _Tp >::Mat_ | ( | const Mat_< _Tp > & | m, |
const Range & | rowRange, | ||
const Range & | colRange = Range::all() |
||
) |
selects a submatrix
selects a submatrix
selects a submatrix, n-dim version
cv::Mat_< _Tp >::Mat_ | ( | const Mat_< _Tp > & | m, |
const std::vector< Range > & | ranges | ||
) |
selects a submatrix, n-dim version
|
explicit |
|
explicit |
|
explicit |
|
explicit |
|
explicit |
|
explicit |
|
explicit |
|
inherited |
Increments the reference counter.
The method increments the reference counter associated with the matrix data. If the matrix header points to an external data set (see Mat::Mat ), the reference counter is NULL, and the method has no effect in this case. Normally, to avoid memory leaks, the method should not be called explicitly. It is called implicitly by the matrix assignment operator. The reference counter increment is an atomic operation on the platforms that support it. Thus, it is safe to operate on the same matrices asynchronously in different threads.
Mat_& cv::Mat_< _Tp >::adjustROI | ( | int | dtop, |
int | dbottom, | ||
int | dleft, | ||
int | dright | ||
) |
some more overridden methods
|
inherited |
Provides a functional form of convertTo.
This is an internally used method called by the MatrixExpressions engine.
m | Destination array. |
type | Desired destination array depth (or -1 if it should be the same as the source type). |
|
inherited |
Returns a reference to the specified array element.
The template methods return a reference to the specified array element. For the sake of higher performance, the index range checks are only performed in the Debug configuration.
Note that the variants with a single index (i) can be used to access elements of single-row or single-column 2-dimensional arrays. That is, if, for example, A is a 1 x N floating-point matrix and B is an M x 1 integer matrix, you can simply write A.at<float>(k+4)
and B.at<int>(2*i+1)
instead of A.at<float>(0,k+4)
and B.at<int>(2*i+1,0)
, respectively.
The example below initializes a Hilbert matrix:
Keep in mind that the size identifier used in the at operator cannot be chosen at random. It depends on the image from which you are trying to retrieve the data. The table below gives a better insight in this:
CV_8U
then use Mat.at<uchar>(y,x)
.CV_8S
then use Mat.at<schar>(y,x)
.CV_16U
then use Mat.at<ushort>(y,x)
.CV_16S
then use Mat.at<short>(y,x)
.CV_32S
then use Mat.at<int>(y,x)
.CV_32F
then use Mat.at<float>(y,x)
.CV_64F
then use Mat.at<double>(y,x)
.i0 | Index along the dimension 0 |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
i0 | Index along the dimension 0 |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
row | Index along the dimension 0 |
col | Index along the dimension 1 |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
row | Index along the dimension 0 |
col | Index along the dimension 1 |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
i0 | Index along the dimension 0 |
i1 | Index along the dimension 1 |
i2 | Index along the dimension 2 |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
i0 | Index along the dimension 0 |
i1 | Index along the dimension 1 |
i2 | Index along the dimension 2 |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
idx | Array of Mat::dims indices. |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
idx | Array of Mat::dims indices. |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. special versions for 2D arrays (especially convenient for referencing image pixels)
pt | Element position specified as Point(j,i) . |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. special versions for 2D arrays (especially convenient for referencing image pixels)
pt | Element position specified as Point(j,i) . |
iterators; they are smart enough to skip gaps in the end of rows
const_iterator cv::Mat_< _Tp >::begin | ( | ) | const |
int cv::Mat_< _Tp >::channels | ( | ) | const |
|
inherited |
elemChannels | Number of channels or number of columns the matrix should have. For a 2-D matrix, when the matrix has only 1 column, then it should have elemChannels channels; When the matrix has only 1 channel, then it should have elemChannels columns. For a 3-D matrix, it should have only one channel. Furthermore, if the number of planes is not one, then the number of rows within every plane has to be 1; if the number of rows within every plane is not 1, then the number of planes has to be 1. |
depth | The depth the matrix should have. Set it to -1 when any depth is fine. |
requireContinuous | Set it to true to require the matrix to be continuous |
The following code demonstrates its usage for a 2-d matrix:
The following code demonstrates its usage for a 3-d matrix:
|
inherited |
Creates a matrix header for the specified column span.
The method makes a new header for the specified column span of the matrix. Similarly to Mat::row and Mat::col , this is an O(1) operation.
startcol | An inclusive 0-based start index of the column span. |
endcol | An exclusive 0-based ending index of the column span. |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
r | Range structure containing both the start and the end indices. |
|
inherited |
Converts an array to another data type with optional scaling.
The method converts source pixel values to the target data type. saturate_cast<> is applied at the end to avoid possible overflows:
\[m(x,y) = saturate \_ cast<rType>( \alpha (*this)(x,y) + \beta )\]
m | output matrix; if it does not have a proper size or type before the operation, it is reallocated. |
rtype | desired output matrix type or, rather, the depth since the number of channels are the same as the input has; if rtype is negative, the output matrix will have the same type as the input. |
alpha | optional scale factor. |
beta | optional delta added to the scaled values. |
Referenced by cv::cv2eigen().
|
inherited |
internal use function; properly re-allocates _size, _step arrays
|
inherited |
Copies the matrix to another one.
The method copies the matrix data to another matrix. Before copying the data, the method invokes :
so that the destination matrix is reallocated if needed. While m.copyTo(m); works flawlessly, the function does not handle the case of a partial overlap between the source and the destination matrices.
When the operation mask is specified, if the Mat::create call shown above reallocates the matrix, the newly allocated matrix is initialized with all zeros before copying the data.
m | Destination matrix. If it does not have a proper size or type before the operation, it is reallocated. |
Referenced by cv::cv2eigen(), and cv::eigen2cv().
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
m | Destination matrix. If it does not have a proper size or type before the operation, it is reallocated. |
mask | Operation mask of the same size as *this. Its non-zero elements indicate which matrix elements need to be copied. The mask has to be of type CV_8U and can have 1 or multiple channels. |
|
inherited |
Allocates new array data if needed.
This is one of the key Mat methods. Most new-style OpenCV functions and methods that produce arrays call this method for each output array. The method uses the following algorithm:
Such a scheme makes the memory management robust and efficient at the same time and helps avoid extra typing for you. This means that usually there is no need to explicitly allocate output arrays. That is, instead of writing:
you can simply write:
because cvtColor, as well as the most of OpenCV functions, calls Mat::create() for the output array internally.
rows | New number of rows. |
cols | New number of columns. |
type | New matrix type. |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
size | Alternative new matrix size specification: Size(cols, rows) |
type | New matrix type. |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
ndims | New array dimensionality. |
sizes | Array of integers specifying a new array shape. |
type | New matrix type. |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
sizes | Array of integers specifying a new array shape. |
type | New matrix type. |
void cv::Mat_< _Tp >::create | ( | int | _rows, |
int | _cols | ||
) |
equivalent to Mat::create(_rows, _cols, DataType<_Tp>::type)
equivalent to Mat::create(_size, DataType<_Tp>::type)
void cv::Mat_< _Tp >::create | ( | int | _ndims, |
const int * | _sizes | ||
) |
equivalent to Mat::create(_ndims, _sizes, DatType<_Tp>::type)
|
inherited |
Computes a cross-product of two 3-element vectors.
The method computes a cross-product of two 3-element vectors. The vectors must be 3-element floating-point vectors of the same shape and size. The result is another 3-element vector of the same shape and type as operands.
m | Another cross-product operand. |
|
inherited |
internal use function, consider to use 'release' method instead; deallocates the matrix data
int cv::Mat_< _Tp >::depth | ( | ) | const |
creates a diagonal matrix
The method creates a square diagonal matrix from specified main diagonal.
d | One-dimensional matrix that represents the main diagonal. |
|
inherited |
Computes a dot-product of two vectors.
The method computes a dot-product of two matrices. If the matrices are not single-column or single-row vectors, the top-to-bottom left-to-right scan ordering is used to treat them as 1D vectors. The vectors must have the same size and type. If the matrices have more than one channel, the dot products from all the channels are summed together.
m | another dot-product operand. |
size_t cv::Mat_< _Tp >::elemSize | ( | ) | const |
overridden forms of Mat::elemSize() etc.
size_t cv::Mat_< _Tp >::elemSize1 | ( | ) | const |
|
inherited |
Returns true if the array has no elements.
The method returns true if Mat::total() is 0 or if Mat::data is NULL. Because of pop_back() and resize() methods M.total() == 0
does not imply that M.data == NULL
.
Referenced by cv::FileNode::read().
const_iterator cv::Mat_< _Tp >::end | ( | ) | const |
|
staticinherited |
Returns an identity matrix of the specified size and type.
The method returns a Matlab-style identity matrix initializer, similarly to Mat::zeros. Similarly to Mat::ones, you can use a scale operation to create a scaled identity matrix efficiently:
rows | Number of rows. |
cols | Number of columns. |
type | Created matrix type. |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
size | Alternative matrix size specification as Size(cols, rows) . |
type | Created matrix type. |
void cv::Mat_< _Tp >::forEach | ( | const Functor & | operation | ) |
template methods for for operation over all matrix elements.
void cv::Mat_< _Tp >::forEach | ( | const Functor & | operation | ) | const |
|
staticinherited |
|
staticinherited |
and the standard allocator
|
inherited |
Inverses a matrix.
The method performs a matrix inversion by means of matrix expressions. This means that a temporary matrix inversion object is returned by the method and can be used further as a part of more complex matrix expressions or can be assigned to a matrix.
method | Matrix inversion method. One of cv::DecompTypes |
|
inherited |
Reports whether the matrix is continuous or not.
The method returns true if the matrix elements are stored continuously without gaps at the end of each row. Otherwise, it returns false. Obviously, 1x1 or 1xN matrices are always continuous. Matrices created with Mat::create are always continuous. But if you extract a part of the matrix using Mat::col, Mat::diag, and so on, or constructed a matrix header for externally allocated data, such matrices may no longer have this property.
The continuity flag is stored as a bit in the Mat::flags field and is computed automatically when you construct a matrix header. Thus, the continuity check is a very fast operation, though theoretically it could be done as follows:
The method is used in quite a few of OpenCV functions. The point is that element-wise operations (such as arithmetic and logical operations, math functions, alpha blending, color space transformations, and others) do not depend on the image geometry. Thus, if all the input and output arrays are continuous, the functions can process them as very long single-row vectors. The example below illustrates how an alpha-blending function can be implemented:
This approach, while being very simple, can boost the performance of a simple element-operation by 10-20 percents, especially if the image is rather small and the operation is quite simple.
Another OpenCV idiom in this function, a call of Mat::create for the destination array, that allocates the destination array unless it already has the proper size and type. And while the newly allocated arrays are always continuous, you still need to check the destination array because Mat::create does not always allocate a new matrix.
Referenced by cv::flann::GenericIndex< Distance >::getIndexParameters(), cv::flann::hierarchicalClustering(), cv::flann::Index_< T >::Index_(), cv::flann::Index_< T >::knnSearch(), and cv::flann::Index_< T >::radiusSearch().
|
inherited |
returns true if the matrix is a submatrix of another matrix
Locates the matrix header within a parent matrix.
After you extracted a submatrix from a matrix using Mat::row, Mat::col, Mat::rowRange, Mat::colRange, and others, the resultant submatrix points just to the part of the original big matrix. However, each submatrix contains information (represented by datastart and dataend fields) that helps reconstruct the original matrix size and the position of the extracted submatrix within the original matrix. The method locateROI does exactly that.
wholeSize | Output parameter that contains the size of the whole matrix containing this as a part. |
ofs | Output parameter that contains an offset of this inside the whole matrix. |
|
inherited |
Performs an element-wise multiplication or division of the two matrices.
The method returns a temporary object encoding per-element array multiplication, with optional scale. Note that this is not a matrix multiplication that corresponds to a simpler "\*" operator.
Example:
m | Another array of the same type and the same size as *this, or a matrix expression. |
scale | Optional scale factor. |
|
staticinherited |
Returns an array of all 1's of the specified size and type.
The method returns a Matlab-style 1's array initializer, similarly to Mat::zeros. Note that using this method you can initialize an array with an arbitrary value, using the following Matlab idiom:
The above operation does not form a 100x100 matrix of 1's and then multiply it by 3. Instead, it just remembers the scale factor (3 in this case) and use it when actually invoking the matrix initializer.
rows | Number of rows. |
cols | Number of columns. |
type | Created matrix type. |
Referenced by cv::detail::BundleAdjusterBase::BundleAdjusterBase().
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
size | Alternative to the matrix size specification Size(cols, rows) . |
type | Created matrix type. |
|
staticinherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
ndims | Array dimensionality. |
sz | Array of integers specifying the array shape. |
type | Created matrix type. |
|
static |
data type conversion
|
inherited |
cv::Mat_< _Tp >::operator Matx< typename DataType< _Tp >::channel_type, m, n > | ( | ) | const |
conversion to Matx
cv::Mat_< _Tp >::operator std::array< _Tp, _Nm > | ( | ) | const |
conversion to array.
cv::Mat_< _Tp >::operator std::vector< _Tp > | ( | ) | const |
conversion to vector.
|
inherited |
cv::Mat_< _Tp >::operator Vec< typename DataType< _Tp >::channel_type, n > | ( | ) | const |
conversion to Vec
Extracts a rectangular submatrix.
The operators make a new header for the specified sub-array of *this . They are the most generalized forms of Mat::row, Mat::col, Mat::rowRange, and Mat::colRange . For example, A(Range(0, 10), Range::all())
is equivalent to A.rowRange(0, 10)
. Similarly to all of the above, the operators are O(1) operations, that is, no matrix data is copied.
rowRange | Start and end row of the extracted submatrix. The upper boundary is not included. To select all the rows, use Range::all(). |
colRange | Start and end column of the extracted submatrix. The upper boundary is not included. To select all the columns, use Range::all(). |
Mat_ cv::Mat_< _Tp >::operator() | ( | const Range & | rowRange, |
const Range & | colRange | ||
) | const |
Mat_ cv::Mat_< _Tp >::operator() | ( | const std::vector< Range > & | ranges | ) | const |
_Tp& cv::Mat_< _Tp >::operator() | ( | const int * | idx | ) |
returns reference to the specified element
const _Tp& cv::Mat_< _Tp >::operator() | ( | const int * | idx | ) | const |
returns read-only reference to the specified element
_Tp& cv::Mat_< _Tp >::operator() | ( | const Vec< int, n > & | idx | ) |
returns reference to the specified element
const _Tp& cv::Mat_< _Tp >::operator() | ( | const Vec< int, n > & | idx | ) | const |
returns read-only reference to the specified element
_Tp& cv::Mat_< _Tp >::operator() | ( | int | idx0 | ) |
returns reference to the specified element (1D case)
const _Tp& cv::Mat_< _Tp >::operator() | ( | int | idx0 | ) | const |
returns read-only reference to the specified element (1D case)
_Tp& cv::Mat_< _Tp >::operator() | ( | int | row, |
int | col | ||
) |
returns reference to the specified element (2D case)
const _Tp& cv::Mat_< _Tp >::operator() | ( | int | row, |
int | col | ||
) | const |
returns read-only reference to the specified element (2D case)
_Tp& cv::Mat_< _Tp >::operator() | ( | int | idx0, |
int | idx1, | ||
int | idx2 | ||
) |
returns reference to the specified element (3D case)
const _Tp& cv::Mat_< _Tp >::operator() | ( | int | idx0, |
int | idx1, | ||
int | idx2 | ||
) | const |
returns read-only reference to the specified element (3D case)
assign a matrix expression
_Tp* cv::Mat_< _Tp >::operator[] | ( | int | y | ) |
more convenient forms of row and element access operators
const _Tp* cv::Mat_< _Tp >::operator[] | ( | int | y | ) | const |
|
inherited |
Removes elements from the bottom of the matrix.
The method removes one or more rows from the bottom of the matrix.
nelems | Number of removed rows. If it is greater than the total number of rows, an exception is thrown. |
|
inherited |
Returns a pointer to the specified matrix row.
The methods return uchar*
or typed pointer to the specified matrix row. See the sample in Mat::isContinuous to know how to use these methods.
i0 | A 0-based row index. |
Referenced by cv::flann::GenericIndex< Distance >::getIndexParameters(), cv::dnn::getPlane(), cv::flann::hierarchicalClustering(), cv::flann::Index_< T >::Index_(), cv::flann::Index_< T >::knnSearch(), and cv::flann::Index_< T >::radiusSearch().
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
row | Index along the dimension 0 |
col | Index along the dimension 1 |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
row | Index along the dimension 0 |
col | Index along the dimension 1 |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
row | Index along the dimension 0 |
col | Index along the dimension 1 |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
row | Index along the dimension 0 |
col | Index along the dimension 1 |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inherited |
Adds elements to the bottom of the matrix.
The methods add one or more elements to the bottom of the matrix. They emulate the corresponding method of the STL vector class. When elem is Mat , its type and the number of columns must be the same as in the container matrix.
elem | Added element(s). |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
elem | Added element(s). |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
elem | Added element(s). |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
m | Added line(s). |
|
inherited |
internal function
void cv::Mat_< _Tp >::release | ( | ) |
equivalent to Mat::release()
|
inherited |
Reserves space for the certain number of rows.
The method reserves space for sz rows. If the matrix already has enough space to store sz rows, nothing happens. If the matrix is reallocated, the first Mat::rows rows are preserved. The method emulates the corresponding method of the STL vector class.
sz | Number of rows. |
|
inherited |
Reserves space for the certain number of bytes.
The method reserves space for sz bytes. If the matrix already has enough space to store sz bytes, nothing happens. If matrix has to be reallocated its previous content could be lost.
sz | Number of bytes. |
|
inherited |
Changes the shape and/or the number of channels of a 2D matrix without copying the data.
The method makes a new matrix header for *this elements. The new matrix may have a different size and/or different number of channels. Any combination is possible if:
For example, if there is a set of 3D points stored as an STL vector, and you want to represent the points as a 3xN matrix, do the following:
cn | New number of channels. If the parameter is 0, the number of channels remains the same. |
rows | New number of rows. If the parameter is 0, the number of rows remains the same. |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inherited |
Changes the number of matrix rows.
The methods change the number of matrix rows. If the matrix is reallocated, the first min(Mat::rows, sz) rows are preserved. The methods emulate the corresponding methods of the STL vector class.
sz | New number of rows. |
|
inherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
sz | New number of rows. |
s | Value assigned to the newly added elements. |
overridden forms of Mat::row() etc.
|
inherited |
Creates a matrix header for the specified row span.
The method makes a new header for the specified row span of the matrix. Similarly to Mat::row and Mat::col , this is an O(1) operation.
startrow | An inclusive 0-based start index of the row span. |
endrow | An exclusive 0-based ending index of the row span. |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
r | Range structure containing both the start and the end indices. |
|
staticinherited |
|
inherited |
Sets all or some of the array elements to the specified value.
This is an advanced variant of the Mat::operator=(const Scalar& s) operator.
value | Assigned scalar converted to the actual array type. |
mask | Operation mask of the same size as *this. Its non-zero elements indicate which matrix elements need to be copied. The mask has to be of type CV_8U and can have 1 or multiple channels |
size_t cv::Mat_< _Tp >::step1 | ( | int | i = 0 | ) | const |
|
inherited |
Transposes a matrix.
The method performs matrix transposition by means of matrix expressions. It does not perform the actual transposition but returns a temporary matrix transposition object that can be further used as a part of more complex matrix expressions or can be assigned to a matrix:
Referenced by cv::cv2eigen().
|
inherited |
Returns the total number of array elements.
The method returns the number of array elements (a number of pixels if the array represents an image).
|
inherited |
Returns the total number of array elements.
The method returns the number of elements within a certain sub-array slice with startDim <= dim < endDim
int cv::Mat_< _Tp >::type | ( | ) | const |
|
inherited |
internal use method: updates the continuity flag
|
staticinherited |
Returns a zero array of the specified size and type.
The method returns a Matlab-style zero array initializer. It can be used to quickly form a constant array as a function parameter, part of a matrix expression, or as a matrix initializer:
In the example above, a new matrix is allocated only if A is not a 3x3 floating-point matrix. Otherwise, the existing matrix A is filled with zeros.
rows | Number of rows. |
cols | Number of columns. |
type | Created matrix type. |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
size | Alternative to the matrix size specification Size(cols, rows) . |
type | Created matrix type. |
|
staticinherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
ndims | Array dimensionality. |
sz | Array of integers specifying the array shape. |
type | Created matrix type. |
overridden forms of Mat::zeros() etc. Data type is omitted, of course
|
static |
|
inherited |
custom allocator
|
inherited |
Referenced by cv::cv2eigen(), cv::flann::GenericIndex< Distance >::getIndexParameters(), cv::flann::hierarchicalClustering(), cv::flann::Index_< T >::Index_(), cv::flann::Index_< T >::knnSearch(), cv::flann::Index_< T >::radiusSearch(), and cv::to_own().
|
inherited |
pointer to the data
Referenced by cv::to_own(), cv::detail::tracked_cv_mat::tracked_cv_mat(), and cv::detail::tracked_cv_mat::validate().
|
inherited |
|
inherited |
|
inherited |
helper fields used in locateROI and adjustROI
|
inherited |
the matrix dimensionality, >= 2
Referenced by cv::dnn::getPlane(), cv::dnn::shape(), and cv::dnn::slice().
|
inherited |
includes several bit-fields:
|
inherited |
the number of rows and columns or (-1, -1) when the matrix has more than 2 dimensions
Referenced by cv::cv2eigen(), cv::flann::GenericIndex< Distance >::getIndexParameters(), cv::flann::hierarchicalClustering(), cv::flann::Index_< T >::Index_(), cv::flann::Index_< T >::knnSearch(), cv::flann::Index_< T >::radiusSearch(), and cv::to_own().
|
inherited |
Referenced by cv::gapi::core::G_TYPED_KERNEL(), cv::dnn::getPlane(), cv::detail::BundleAdjusterBase::setRefinementMask(), and cv::dnn::shape().
|
inherited |
Referenced by cv::to_own().