OpenCV 4.11.0
开源计算机视觉
加载中…
搜索中…
无匹配项
cv::Mat_< _Tp > 类模板参考

派生自Mat的模板矩阵类。 更多…

#include <opencv2/core/mat.hpp>

cv::Mat_< _Tp > 的协作图

公共类型

typedef DataType< _Tp >::channel_type channel_type
 
typedef MatConstIterator_< _Tpconst_iterator
 
typedef MatIterator_< _Tpiterator
 
typedef _Tp value_type
 
- 从 cv::Mat 继承的公共类型
枚举 {
  MAGIC_VAL = 0x42FF0000 ,
  AUTO_STEP = 0 ,
  CONTINUOUS_FLAG = CV_MAT_CONT_FLAG ,
  SUBMATRIX_FLAG = CV_SUBMAT_FLAG
}
 
枚举 {
  MAGIC_MASK = 0xFFFF0000 ,
  TYPE_MASK = 0x00000FFF ,
  DEPTH_MASK = 7
}
 

公共成员函数

 Mat_ () CV_NOEXCEPT
 默认构造函数
 
 Mat_ (const Mat &m)
 复制/转换构造函数。如果 m 类型不同,则进行转换
 
 Mat_ (const Mat_ &m)
 复制构造函数
 
 Mat_ (const Mat_ &m, const Range &rowRange, const Range &colRange=Range::all())
 选择子矩阵
 
 Mat_ (const Mat_ &m, const Range *ranges)
 选择子矩阵,n维版本
 
 Mat_ (const Mat_ &m, const Rect &roi)
 选择子矩阵
 
 Mat_ (const Mat_ &m, const std::vector< Range > &ranges)
 选择子矩阵,n维版本
 
 Mat_ (const MatCommaInitializer_< _Tp > &commaInitializer)
 
 Mat_ (const MatExpr &e)
 从矩阵表达式创建
 
template<int m, int n>
 Mat_ (const Matx< typename DataType< _Tp >::channel_type, m, n > &mtx, bool copyData=true)
 
 Mat_ (const Point3_< typename DataType< _Tp >::channel_type > &pt, bool copyData=true)
 
 Mat_ (const Point_< typename DataType< _Tp >::channel_type > &pt, bool copyData=true)
 
template<std::size_t _Nm>
 Mat_ (const std::array< _Tp, _Nm > &arr, bool copyData=false)
 
 Mat_ (const std::initializer_list< int > sizes, const std::initializer_list< _Tp > values)
 
 Mat_ (const std::vector< _Tp > &vec, bool copyData=false)
 Vec、std::vector、Point_Point3_ 创建矩阵。矩阵将只有一列
 
template<int n>
 Mat_ (const Vec< typename DataType< _Tp >::channel_type, n > &vec, bool copyData=true)
 
 Mat_ (int _ndims, const int *_sizes)
 n维数组构造函数
 
 Mat_ (int _ndims, const int *_sizes, _Tp *_data, const size_t *_steps=0)
 在用户分配的数据之上构造n维矩阵。步长以字节为单位(!!!),与类型无关
 
 Mat_ (int _ndims, const int *_sizes, const _Tp &value)
 将每个矩阵元素设置为指定值的n维数组构造函数
 
 Mat_ (int _rows, int _cols)
 等效于 Mat(_rows, _cols, DataType<_Tp>::type)
 
 Mat_ (int _rows, int _cols, _Tp *_data, size_t _step=AUTO_STEP)
 使用用户分配的数据构造矩阵。步长单位为字节(!!!) ,与数据类型无关。
 
 Mat_ (int _rows, int _cols, const _Tp &value)
 将每个矩阵元素设置为指定值的构造函数。
 
 Mat_ (Mat &&m)
 
 Mat_ (Mat_ &&m)
 
 Mat_ (MatExpr &&e)
 
 Mat_ (Size _size)
 等价于 Mat(_size, DataType<_Tp>::type)
 
 Mat_ (Size _size, const _Tp &value)
 将每个矩阵元素设置为指定值的构造函数。
 
 Mat_ (std::initializer_list< _Tp > values)
 
Mat_adjustROI (int dtop, int dbottom, int dleft, int dright)
 一些重载方法
 
iterator begin ()
 迭代器;它们足够智能,可以跳过行尾的间隙。
 
const_iterator begin () const
 
int channels () const
 
CV_NODISCARD_STD Mat_ clone () const
 
Mat_ col (int x) const
 
void create (int _ndims, const int *_sizes)
 等价于 Mat::create(_ndims, _sizes, DatType<_Tp>::type)
 
void create (int _rows, int _cols)
 等价于 Mat::create(_rows, _cols, DataType<_Tp>::type)
 
void create (Size _size)
 等价于 Mat::create(_size, DataType<_Tp>::type)
 
Mat_ cross (const Mat_ &m) const
 叉乘
 
int depth () const
 
Mat_ diag (int d=0) const
 
size_t elemSize () const
 Mat::elemSize() 等的重载形式。
 
size_t elemSize1 () const
 
iterator end ()
 
const_iterator end () const
 
template<typename Functor >
void forEach (const Functor &operation)
 用于所有矩阵元素操作的模板方法。
 
template<typename Functor >
void forEach (const Functor &operation) const
 
template<typename T2 >
 operator Mat_< T2 > () const
 数据类型转换
 
template<int m, int n>
 operator Matx< typename DataType< _Tp >::channel_type, m, n > () const
 转换为Matx
 
template<std::size_t _Nm>
 operator std::array< _Tp, _Nm > () const
 转换为数组。
 
 operator std::vector< _Tp > () const
 转换为向量。
 
template<int n>
 operator Vec< typename DataType< _Tp >::channel_type, n > () const
 转换为Vec
 
_Tpoperator() (const int *idx)
 返回对指定元素的引用。
 
const _Tpoperator() (const int *idx) const
 返回对指定元素的只读引用。
 
Mat_ operator() (const Range &rowRange, const Range &colRange) const
 
Mat_ operator() (const Range *ranges) const
 
Mat_ operator() (const Rect &roi) const
 
Mat_ operator() (const std::vector< Range > &ranges) const
 
template<int n>
_Tpoperator() (const Vec< int, n > &idx)
 返回对指定元素的引用。
 
template<int n>
const _Tpoperator() (const Vec< int, n > &idx) const
 返回对指定元素的只读引用。
 
_Tpoperator() (int idx0)
 返回对指定元素的引用(一维情况)。
 
const _Tpoperator() (int idx0) const
 返回对指定元素的只读引用(一维情况)。
 
_Tpoperator() (int idx0, int idx1, int idx2)
 返回对指定元素的引用(三维情况)。
 
const _Tpoperator() (int idx0, int idx1, int idx2) const
 返回对指定元素的只读引用(三维情况)。
 
_Tpoperator() (int row, int col)
 返回对指定元素的引用(二维情况)。
 
const _Tpoperator() (int row, int col) const
 返回对指定元素的只读引用(二维情况)。
 
_Tpoperator() (Point pt)
 
const _Tpoperator() (Point pt) const
 
Mat_operator= (const _Tp &s)
 将所有元素设置为 s。
 
Mat_operator= (const Mat &m)
 
Mat_operator= (const Mat_ &m)
 
Mat_operator= (const MatExpr &e)
 赋值矩阵表达式
 
Mat_operator= (Mat &&m)
 
Mat_operator= (Mat_ &&m)
 
_Tpoperator[] (int y)
 更方便的行和元素访问运算符形式
 
const _Tpoperator[] (int y) const
 
std::reverse_iterator< iteratorrbegin ()
 
std::reverse_iterator< const_iteratorrbegin () const
 
void 释放 ()
 等效于 Mat::release()
 
std::reverse_iterator< iteratorrend ()
 
std::reverse_iterator< const_iteratorrend () const
 
Mat_ row (int y) const
 重载形式的 Mat::row() 等。
 
size_t step1 (int i=0) const
 
size_t stepT (int i=0) const
 返回 step()/sizeof(_Tp)
 
int type () const
 
- 继承自 cv::Mat 的公有成员函数
 Mat () CV_NOEXCEPT
 
 Mat (const cuda::GpuMat &m)
 从GpuMat下载数据
 
 Mat (const Mat &m)
 
 Mat (const Mat &m, const Range &rowRange, const Range &colRange=Range::all())
 
 Mat (const Mat &m, const Range *ranges)
 
 Mat (const Mat &m, const Rect &roi)
 
 Mat (const Mat &m, const std::vector< Range > &ranges)
 
template<typename _Tp >
 Mat (const MatCommaInitializer_< _Tp > &commaInitializer)
 
template<typename _Tp , int m, int n>
 Mat (const Matx< _Tp, m, n > &mtx, bool copyData=true)
 
template<typename _Tp >
 Mat (const Point3_< _Tp > &pt, bool copyData=true)
 
template<typename _Tp >
 Mat (const Point_< _Tp > &pt, bool copyData=true)
 
template<typename _Tp , size_t _Nm>
 Mat (const std::array< _Tp, _Nm > &arr, 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 >
 Mat (const std::vector< _Tp > &vec, bool copyData=false)
 
 Mat (const std::vector< int > &sizes, int type)
 
 Mat (const std::vector< int > &sizes, int type, const Scalar &s)
 
 Mat (const std::vector< int > &sizes, int type, void *data, const size_t *steps=0)
 
template<typename _Tp , int n>
 Mat (const Vec< _Tp, n > &vec, bool copyData=true)
 
 Mat (int ndims, const int *sizes, int type)
 
 Mat (int ndims, const int *sizes, int type, const Scalar &s)
 
 Mat (int ndims, const int *sizes, int type, void *data, const size_t *steps=0)
 
 Mat (int rows, int cols, int type)
 
 Mat (int rows, int cols, int type, const Scalar &s)
 
 Mat (int rows, int cols, int type, void *data, size_t step=AUTO_STEP)
 
 Mat (Mat &&m) CV_NOEXCEPT
 
 Mat (Size size, int type)
 
 Mat (Size size, int type, const Scalar &s)
 
 Mat (Size size, int type, void *data, size_t step=AUTO_STEP)
 
 ~Mat ()
 析构函数 - 调用 release() (减少引用计数,并在需要时释放矩阵)
 
void addref ()
 增加引用计数。
 
MatadjustROI (int dtop, int dbottom, int dleft, int dright)
 调整子矩阵在其父矩阵中的大小和位置。
 
void assignTo (Mat &m, int type=-1) const
 提供 convertTo 的函数形式。
 
template<typename _Tp >
_Tpat (const int *idx)
 
template<typename _Tp >
const _Tpat (const int *idx) const
 
template<typename _Tp , int n>
_Tpat (const Vec< int, n > &idx)
 
template<typename _Tp , int n>
const _Tpat (const Vec< int, n > &idx) const
 
template<typename _Tp >
_Tpat (int i0, int i1, int i2)
 
template<typename _Tp >
const _Tpat (int i0, int i1, int i2) const
 
template<typename _Tp >
_Tpat (int i0=0)
 返回对指定数组元素的引用。
 
template<typename _Tp >
const _Tpat (int i0=0) const
 
template<typename _Tp >
_Tpat (int row, int col)
 
template<typename _Tp >
const _Tpat (int row, int col) const
 
template<typename _Tp >
_Tpat (Point pt)
 
template<typename _Tp >
const _Tpat (Point pt) const
 
template<typename _Tp >
MatIterator_< _Tpbegin ()
 返回矩阵迭代器并将其设置为第一个矩阵元素。
 
template<typename _Tp >
MatConstIterator_< _Tpbegin () const
 
int channels () const
 返回矩阵通道数。
 
int checkVector (int elemChannels, int depth=-1, bool requireContinuous=true) const
 
CV_NODISCARD_STD Mat clone () const
 创建数组和底层数据的完整副本。
 
Mat col (int x) const
 为指定的矩阵列创建矩阵头。
 
Mat colRange (const Range &r) const
 
Mat colRange (int startcol, int endcol) const
 为指定的列范围创建矩阵头。
 
void convertTo (OutputArray m, int rtype, double alpha=1, double beta=0) const
 将数组转换为另一种数据类型,并可以选择缩放。
 
void copySize (const Mat &m)
 内部使用函数;正确地重新分配 _size、_step 数组
 
void copyTo (OutputArray m) const
 将矩阵复制到另一个矩阵。
 
void copyTo (OutputArray m, InputArray mask) const
 
void create (const std::vector< int > &sizes, int type)
 
void create (int ndims, const int *sizes, int type)
 
void create (int rows, int cols, int type)
 根据需要分配新的数组数据。
 
void create (Size size, int type)
 
Mat cross (InputArray m) const
 计算两个 3 元素向量的叉积。
 
void deallocate ()
 内部使用函数,建议使用 'release' 方法代替;释放矩阵数据
 
int depth () const
 返回矩阵元素的深度。
 
Mat diag (int d=0) const
 从矩阵中提取对角线。
 
double dot (InputArray m) const
 计算两个向量的点积。
 
size_t elemSize () const
 返回矩阵元素的大小(以字节为单位)。
 
size_t elemSize1 () const
 返回每个矩阵元素通道的大小(以字节为单位)。
 
bool empty () const
 如果数组没有元素,则返回 true。
 
template<typename _Tp >
MatIterator_< _Tpend ()
 返回矩阵迭代器并将其设置为最后一个矩阵元素之后。
 
template<typename _Tp >
MatConstIterator_< _Tpend () const
 
template<typename _Tp , typename Functor >
void forEach (const Functor &operation)
 并行运行给定的函数于所有矩阵元素上。
 
template<typename _Tp , typename Functor >
void forEach (const Functor &operation) const
 
UMat getUMat (AccessFlag accessFlags, UMatUsageFlags usageFlags=USAGE_DEFAULT) const
 Mat 中检索 UMat
 
MatExpr inv (int method=DECOMP_LU) const
 矩阵求逆。
 
bool isContinuous () const
 报告矩阵是否连续。
 
bool isSubmatrix () const
 如果矩阵是另一个矩阵的子矩阵,则返回 true。
 
void locateROI (Size &wholeSize, Point &ofs) const
 定位矩阵头在父矩阵中的位置。
 
MatExpr mul (InputArray m, double scale=1) const
 执行两个矩阵的逐元素乘法或除法。
 
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() (const Range *ranges) const
 
Mat operator() (const Rect &roi) const
 
Mat operator() (const std::vector< Range > &ranges) const
 
Mat operator() (Range rowRange, Range colRange) const
 提取矩形子矩阵。
 
Matoperator= (const Mat &m)
 赋值运算符
 
Matoperator= (const MatExpr &expr)
 
Matoperator= (const Scalar &s)
 将所有或部分数组元素设置为指定的值。
 
Matoperator= (Mat &&m)
 
void pop_back (size_t nelems=1)
 从矩阵底部移除元素。
 
ucharptr (const int *idx)
 
template<typename _Tp >
_Tpptr (const int *idx)
 
const ucharptr (const int *idx) const
 
template<typename _Tp >
const _Tpptr (const int *idx) const
 
template<int n>
ucharptr (const Vec< int, n > &idx)
 
template<typename _Tp , int n>
_Tpptr (const Vec< int, n > &idx)
 
template<int n>
const ucharptr (const Vec< int, n > &idx) const
 
template<typename _Tp , int n>
const _Tpptr (const Vec< int, n > &idx) const
 
ucharptr (int i0, int i1, int i2)
 
template<typename _Tp >
_Tpptr (int i0, int i1, int i2)
 
const ucharptr (int i0, int i1, int i2) const
 
template<typename _Tp >
const _Tpptr (int i0, int i1, int i2) const
 
ucharptr (int i0=0)
 返回指向指定矩阵行的指针。
 
template<typename _Tp >
_Tpptr (int i0=0)
 
const ucharptr (int i0=0) const
 
template<typename _Tp >
const _Tpptr (int i0=0) const
 
ucharptr (int row, int col)
 
template<typename _Tp >
_Tpptr (int row, int col)
 
const ucharptr (int row, int col) const
 
template<typename _Tp >
const _Tpptr (int row, int col) const
 
template<typename _Tp >
void push_back (const _Tp &elem)
 向矩阵底部添加元素。
 
void push_back (const Mat &m)
 
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 void *elem)
 内部函数
 
template<typename _Tp >
std::reverse_iterator< MatIterator_< _Tp > > rbegin ()
 begin() 相同,但用于逆向遍历。
 
template<typename _Tp >
std::reverse_iterator< MatConstIterator_< _Tp > > rbegin () const
 
void 释放 ()
 递减引用计数器,并在需要时释放矩阵。
 
template<typename _Tp >
std::reverse_iterator< MatIterator_< _Tp > > rend ()
 end() 相同,但用于逆向遍历。
 
template<typename _Tp >
std::reverse_iterator< MatConstIterator_< _Tp > > rend () const
 
void reserve (size_t sz)
 为特定数量的行预留空间。
 
void reserveBuffer (size_t sz)
 为特定数量的字节预留空间。
 
Mat reshape (int cn, const std::vector< int > &newshape) const
 
Mat reshape (int cn, int newndims, const int *newsz) const
 
Mat reshape (int cn, int rows=0) const
 更改二维矩阵的形状和/或通道数,无需复制数据。
 
void resize (size_t sz)
 更改矩阵的行数。
 
void resize (size_t sz, const Scalar &s)
 
Mat row (int y) const
 为指定的矩阵行创建一个矩阵头。
 
Mat rowRange (const Range &r) const
 
Mat rowRange (int startrow, int endrow) const
 为指定的行范围创建一个矩阵头。
 
MatsetTo (InputArray value, InputArray mask=noArray())
 将所有或部分数组元素设置为指定的值。
 
size_t step1 (int i=0) const
 返回归一化的步长。
 
MatExpr t () const
 转置矩阵。
 
size_t total () const
 返回数组元素的总数。
 
size_t total (int startDim, int endDim=INT_MAX) const
 返回数组元素的总数。
 
int type () const
 返回矩阵元素的类型。
 
void updateContinuityFlag ()
 内部使用方法:更新连续性标志
 

静态公共成员函数

static CV_NODISCARD_STD MatExpr eye (int rows, int cols)
 
static CV_NODISCARD_STD MatExpr eye (Size size)
 
static CV_NODISCARD_STD MatExpr ones (int _ndims, const int *_sizes)
 
static CV_NODISCARD_STD MatExpr ones (int rows, int cols)
 
static CV_NODISCARD_STD MatExpr ones (Size size)
 
static CV_NODISCARD_STD MatExpr zeros (int _ndims, const int *_sizes)
 
static CV_NODISCARD_STD MatExpr zeros (int rows, int cols)
 Mat::zeros() 等的重写形式。当然,数据类型被省略了
 
static CV_NODISCARD_STD MatExpr zeros (Size size)
 
- 继承自 cv::Mat 的静态公共成员函数
static CV_NODISCARD_STD Mat diag (const Mat &d)
 创建一个对角矩阵
 
static CV_NODISCARD_STD MatExpr eye (int rows, int cols, int type)
 返回指定大小和类型的单位矩阵。
 
static CV_NODISCARD_STD MatExpr eye (Size size, int type)
 
static MatAllocatorgetDefaultAllocator ()
 
static MatAllocatorgetStdAllocator ()
 以及标准分配器
 
static CV_NODISCARD_STD MatExpr ones (int ndims, const int *sz, int type)
 
static CV_NODISCARD_STD MatExpr ones (int rows, int cols, int type)
 返回指定大小和类型,所有元素都为 1 的数组。
 
static CV_NODISCARD_STD MatExpr ones (Size size, int type)
 
static void setDefaultAllocator (MatAllocator *allocator)
 
static CV_NODISCARD_STD MatExpr zeros (int ndims, const int *sz, int type)
 
static CV_NODISCARD_STD MatExpr zeros (int rows, int cols, int type)
 返回指定大小和类型的零数组。
 
static CV_NODISCARD_STD MatExpr zeros (Size size, int type)
 

其他继承的成员

- 继承自 cv::Mat 的公共属性
MatAllocatorallocator
 自定义分配器
 
int cols
 
uchardata
 指向数据的指针
 
const uchardataend
 
const uchardatalimit
 
const uchardatastart
 在 locateROI 和 adjustROI 中使用的辅助字段
 
int dims
 矩阵维数,>= 2
 
int flags
 
int rows
 行数和列数,当矩阵维数大于2时为(-1, -1)
 
MatSize size
 
MatStep step
 
UMatDatau
 UMat 的交互
 
- 继承自 cv::Mat 的保护成员函数
template<typename _Tp , typename Functor >
void forEach_impl (const Functor &operation)
 

详细描述

模板<typename _Tp>
类 cv::Mat_< _Tp >

派生自 Mat 的模板矩阵类。

模板<typename _Tp> 类 Mat_ : 公共 Mat
{
公共:
// ...一些特定方法
// 和
// 没有新的额外字段
};
派生自 Mat 的模板矩阵类。
定义 mat.hpp:2247
n维稠密数组类
定义 mat.hpp:829

Mat_<_Tp>Mat 类的轻量级模板包装器。它没有任何额外的字段。这个类和Mat都没有虚方法。因此,这两个类的引用或指针可以自由但谨慎地相互转换。例如

// 创建一个 100x100 的 8 位矩阵
Mat M(100,100,CV_8U);
// 这将编译通过。不会进行任何数据转换。
// 程序很可能在下面的语句处崩溃
M1(99,99) = 1.f;
#define CV_8U
定义 interface.h:73

虽然在大多数情况下 Mat 足够用,但如果您大量使用元素访问操作,并且在编译时知道矩阵类型,则 Mat_ 可能更方便。请注意,Mat::at(int y,int x)Mat_::operator()(int y,int x) 执行完全相同的操作,并且运行速度相同,但后者肯定更短。

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);
_Tp & at(int i0=0)
返回对指定数组元素的引用。
bool eigen(InputArray src, OutputArray eigenvalues, OutputArray eigenvectors=noArray())
计算对称矩阵的特征值和特征向量。

要将 Mat_ 用于多通道图像/矩阵,请将 Vec 作为 Mat_ 参数传递。

// 分配一个 320x240 的彩色图像,并用绿色(在 RGB 空间中)填充它
Mat_<Vec3b> img(240, 320, Vec3b(0,255,0));
// 现在绘制一条对角白色线
for(int i = 0; i < 100; i++)
img(i,i)=Vec3b(255,255,255);
// 现在扰乱每个像素的第二个(红色)通道
for(int i = 0; i < img.rows; i++)
for(int j = 0; j < img.cols; j++)
img(i,j)[2] ^= (unsigned char)(i ^ j);
Vec< uchar, 3 > Vec3b
定义 matx.hpp:441
unsigned char uchar
定义 interface.h:51

Mat_ 完全兼容 C++11 基于范围的 for 循环。例如,此循环可用于安全地应用查找表

void applyTable(Mat_<uchar>& I, const uchar* const table)
{
for(auto& pixel : I)
{
pixel = table[pixel];
}
}
示例
samples/cpp/image_alignment.cppsamples/cpp/kalman.cppsamples/cpp/stitching_detailed.cppsamples/cpp/tutorial_code/core/file_input_output/file_input_output.cppsamples/cpp/tutorial_code/core/how_to_scan_images/how_to_scan_images.cppsamples/cpp/tutorial_code/features2D/Homography/decompose_homography.cppsamples/cpp/tutorial_code/features2D/Homography/homography_from_camera_displacement.cppsamples/cpp/tutorial_code/features2D/Homography/pose_from_homography.cppsamples/dnn/object_detection.cpp

成员类型定义文档

◆ channel_type

template<typename _Tp >
DataType<_Tp>::channel_type cv::Mat_< _Tp >::channel_type

◆ const_iterator

template<typename _Tp >
MatConstIterator_<_Tp> cv::Mat_< _Tp >::const_iterator

◆ iterator

template<typename _Tp >
MatIterator_<_Tp> cv::Mat_< _Tp >::iterator

◆ value_type

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

构造函数和析构函数文档

◆ Mat_() [1/28]

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

默认构造函数

◆ Mat_() [2/28]

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

等效于 Mat(_rows, _cols, DataType<_Tp>::type)

◆ Mat_() [3/28]

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

将每个矩阵元素设置为指定值的构造函数。

◆ Mat_() [4/28]

template<typename _Tp >
cv::Mat_< _Tp >::Mat_ ( Size _size)
显式

等价于 Mat(_size, DataType<_Tp>::type)

◆ Mat_() [5/28]

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

将每个矩阵元素设置为指定值的构造函数。

◆ Mat_() [6/28]

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

n维数组构造函数

◆ Mat_() [7/28]

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

将每个矩阵元素设置为指定值的n维数组构造函数

◆ Mat_() [8/28]

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

复制/转换构造函数。如果 m 类型不同,则进行转换

◆ Mat_() [9/28]

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

复制构造函数

◆ Mat_() [10/28]

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

使用用户分配的数据构造矩阵。步长单位为字节(!!!) ,与数据类型无关。

◆ Mat_() [11/28]

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

在用户分配的数据之上构造n维矩阵。步长以字节为单位(!!!),与类型无关

◆ Mat_() [12/28]

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

选择子矩阵

◆ Mat_() [13/28]

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

选择子矩阵

◆ Mat_() [14/28]

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

选择子矩阵,n维版本

◆ Mat_() [15/28]

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

选择子矩阵,n维版本

◆ Mat_() [16/28]

template<typename _Tp >
cv::Mat_< _Tp >::Mat_ ( const MatExpr & e)
显式

从矩阵表达式创建

◆ Mat_() [17/28]

template<typename _Tp >
cv::Mat_< _Tp >::Mat_ ( const std::vector< _Tp > & vec,
bool copyData = false )
显式

Vec、std::vector、Point_Point3_ 创建矩阵。矩阵将只有一列

◆ 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 )
显式

◆ 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 )
显式

◆ Mat_() [20/28]

template<typename _Tp >
cv::Mat_< _Tp >::Mat_ ( const Point_< typename DataType< _Tp >::channel_type > & pt,
bool copyData = true )
显式

◆ Mat_() [21/28]

template<typename _Tp >
cv::Mat_< _Tp >::Mat_ ( const Point3_< typename DataType< _Tp >::channel_type > & pt,
bool copyData = true )
显式

◆ Mat_() [22/28]

template<typename _Tp >
cv::Mat_< _Tp >::Mat_ ( const MatCommaInitializer_< _Tp > & commaInitializer)
显式

◆ 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 )
显式

◆ Mat_() [25/28]

template<typename _Tp >
template<std::size_t _Nm>
cv::Mat_< _Tp >::Mat_ ( const std::array< _Tp, _Nm > & arr,
bool copyData = false )
显式

◆ 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)

成员函数文档

◆ adjustROI()

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

一些重载方法

◆ begin() [1/2]

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

迭代器;它们足够智能,可以跳过行尾的间隙。

◆ 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 >
CV_NODISCARD_STD 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 _ndims,
const int * _sizes )

等价于 Mat::create(_ndims, _sizes, DatType<_Tp>::type)

◆ create() [2/3]

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

等价于 Mat::create(_rows, _cols, DataType<_Tp>::type)

◆ create() [3/3]

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

等价于 Mat::create(_size, DataType<_Tp>::type)

◆ cross()

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

叉乘

◆ 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

Mat::elemSize() 等的重载形式。

◆ 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 CV_NODISCARD_STD MatExpr cv::Mat_< _Tp >::eye ( int rows,
int cols )
static

◆ eye() [2/2]

template<typename _Tp >
static CV_NODISCARD_STD 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)

用于所有矩阵元素操作的模板方法。

◆ 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 CV_NODISCARD_STD MatExpr cv::Mat_< _Tp >::ones ( int _ndims,
const int * _sizes )
static

◆ ones() [2/3]

template<typename _Tp >
static CV_NODISCARD_STD MatExpr cv::Mat_< _Tp >::ones ( int rows,
int cols )
static

◆ ones() [3/3]

template<typename _Tp >
static CV_NODISCARD_STD MatExpr cv::Mat_< _Tp >::ones ( Size size)
static

◆ operator Mat_< T2 >()

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

数据类型转换

◆ 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

转换为Matx

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

template<typename _Tp >
template<std::size_t _Nm>
cv::Mat_< _Tp >::operator std::array< _Tp, _Nm > ( ) const

转换为数组。

◆ operator std::vector< _Tp >()

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

转换为向量。

◆ 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

转换为Vec

◆ operator()() [1/16]

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

返回对指定元素的引用。

◆ operator()() [2/16]

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

返回对指定元素的只读引用。

◆ operator()() [3/16]

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

◆ operator()() [4/16]

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

◆ operator()() [5/16]

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

◆ operator()() [6/16]

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

◆ operator()() [7/16]

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

返回对指定元素的引用。

◆ operator()() [8/16]

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

返回对指定元素的只读引用。

◆ operator()() [9/16]

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

返回对指定元素的引用(一维情况)。

◆ operator()() [10/16]

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

返回对指定元素的只读引用(一维情况)。

◆ operator()() [11/16]

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

返回对指定元素的引用(三维情况)。

◆ operator()() [12/16]

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

返回对指定元素的只读引用(三维情况)。

◆ operator()() [13/16]

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

返回对指定元素的引用(二维情况)。

◆ operator()() [14/16]

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

返回对指定元素的只读引用(二维情况)。

◆ 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 _Tp & s)

将所有元素设置为 s。

◆ operator=() [2/6]

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

◆ operator=() [3/6]

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

◆ operator=() [4/6]

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

赋值矩阵表达式

◆ operator=() [5/6]

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

◆ operator=() [6/6]

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

◆ operator[]() [1/2]

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

更方便的行和元素访问运算符形式

◆ operator[]() [2/2]

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

◆ rbegin() [1/2]

template<typename _Tp >
std::reverse_iterator< iterator > cv::Mat_< _Tp >::rbegin ( )

◆ rbegin() [2/2]

template<typename _Tp >
std::reverse_iterator< const_iterator > cv::Mat_< _Tp >::rbegin ( ) const

◆ release()

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

等效于 Mat::release()

◆ rend() [1/2]

template<typename _Tp >
std::reverse_iterator< iterator > cv::Mat_< _Tp >::rend ( )

◆ rend() [2/2]

template<typename _Tp >
std::reverse_iterator< const_iterator > cv::Mat_< _Tp >::rend ( ) const

◆ row()

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

重载形式的 Mat::row() 等。

◆ 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

返回 step()/sizeof(_Tp)

◆ type()

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

◆ zeros() [1/3]

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

◆ zeros() [2/3]

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

Mat::zeros() 等的重写形式。当然,数据类型被省略了

◆ zeros() [3/3]

template<typename _Tp >
static CV_NODISCARD_STD MatExpr cv::Mat_< _Tp >::zeros ( Size size)
static

此类的文档是从以下文件生成的: