OpenCV 4.13.0
开源计算机视觉库 (Open Source Computer Vision)
正在加载...
正在搜索...
未找到匹配项
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 的公开类型
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
}
 

公开成员函数

 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)
 选择子矩阵,多维版本
 
 Mat_ (const Mat_ &m, const Rect &roi)
 选择子矩阵
 
 Mat_ (const Mat_ &m, const std::vector< Range > &ranges)
 选择子矩阵,多维版本
 
 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)
 多维数组构造函数
 
 Mat_ (int _ndims, const int *_sizes, _Tp *_data, const size_t *_steps=0)
 在用户分配的数据之上构造多维矩阵。步长以字节 (!!!) 为单位,与类型无关
 
 Mat_ (int _ndims, const int *_sizes, const _Tp &value)
 将每个矩阵元素设置为指定值的多维数组构造函数
 
 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
 转换为 array
 
 operator std::vector< _Tp > () const
 转换为 vector
 
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)
 返回对指定元素的引用(1D 情况)
 
const _Tpoperator() (int idx0) const
 返回对指定元素的只读引用(1D 情况)
 
_Tpoperator() (int idx0, int idx1, int idx2)
 返回对指定元素的引用(3D 情况)
 
const _Tpoperator() (int idx0, int idx1, int idx2) const
 返回对指定元素的只读引用(3D 情况)
 
_Tpoperator() (int row, int col)
 返回对指定元素的引用(2D 情况)
 
const _Tpoperator() (int row, int col) const
 返回对指定元素的只读引用(2D 情况)
 
_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 release (释放) ()
 等同于 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 copyAt (OutputArray m) const
 覆盖现有矩阵。
 
void copyAt (OutputArray m, InputArray mask) 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
 
Mat reinterpret (int type) const
 重置矩阵类型。
 
void release (释放) ()
 递减引用计数器,如果需要,反分配矩阵。
 
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
 在不复制数据的情况下更改 2D 矩阵的形状和/或通道数。
 
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)
 返回一个指定大小和类型的全 0 数组。
 
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)
 

详细说明

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

派生自 Mat 的模板矩阵类。

template<typename _Tp> class Mat_ : public Mat
{
public:
// ... 一些特定的方法
// 以及
// 没有新的额外字段
};
派生自 Mat 的模板矩阵类。
定义于 mat.hpp:2296
n 维密集数组类
定义于 mat.hpp:840

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);
// 现在扰乱每个像素的第 2 个 (红色) 通道
for(int i = 0; i < img.rows; i++)
for(int j = 0; j < img.cols; j++)
img(i,j)[2] ^= (uchar)(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(& pixel : I)
{
pixel = table[pixel];
}
}
示例
samples/cpp/image_alignment.cpp, samples/cpp/kalman.cpp, samples/cpp/stitching_detailed.cpp, samples/cpp/tutorial_code/core/file_input_output/file_input_output.cpp, samples/cpp/tutorial_code/core/how_to_scan_images/how_to_scan_images.cpp, samples/cpp/tutorial_code/features2D/Homography/decompose_homography.cpp, samples/cpp/tutorial_code/features2D/Homography/homography_from_camera_displacement.cpp, samples/cpp/tutorial_code/features2D/Homography/pose_from_homography.cpp, 和 samples/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 (大小))
explicit (显式)

等同于 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 (大小数组) )

多维数组构造函数

◆ Mat_() [7/28]

template<typename _Tp >
cv::Mat_< _Tp >::Mat_ ( int _ndims (维度数),
const int * _sizes (大小数组),
const _Tp & value (值) )

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

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

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

◆ 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 (范围数组) )

选择子矩阵,多维版本

◆ Mat_() [15/28]

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

选择子矩阵,多维版本

◆ Mat_() [16/28]

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

从矩阵表达式创建

◆ Mat_() [17/28]

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

从 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 )
explicit (显式)

◆ Mat_() [19/28]

template<typename _Tp >
template<int m, int n>
cv::Mat_< _Tp >::Mat_ ( const Matx< typename DataType< _Tp >::channel_type, m, n > & mtx (矩阵),
bool copyData = true )
explicit (显式)

◆ Mat_() [20/28]

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

◆ Mat_() [21/28]

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

◆ Mat_() [22/28]

template<typename _Tp >
cv::Mat_< _Tp >::Mat_ ( const MatCommaInitializer_< _Tp > & commaInitializer (逗号初始化器))
explicit (显式)

◆ Mat_() [23/28]

template<typename _Tp >
cv::Mat_< _Tp >::Mat_ ( std::initializer_list< _Tp > values (值列表))

◆ Mat_() [24/28]

template<typename _Tp >
cv::Mat_< _Tp >::Mat_ ( const std::initializer_list< int > sizes (大小列表),
const std::initializer_list< _Tp > values (值列表) )
explicit (显式)

◆ Mat_() [25/28]

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

◆ Mat_() [26/28]

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

◆ Mat_() [27/28]

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

◆ Mat_() [28/28]

template<typename _Tp >
cv::Mat_< _Tp >::Mat_ ( MatExpr (矩阵表达式) && e)

成员函数说明

◆ 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

转换为 array

◆ operator std::vector< _Tp >()

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

转换为 vector

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

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

转换为 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)

返回对指定元素的引用(1D 情况)

◆ operator()() [10/16]

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

返回对指定元素的只读引用(1D 情况)

◆ operator()() [11/16]

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

返回对指定元素的引用(3D 情况)

◆ operator()() [12/16]

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

返回对指定元素的只读引用(3D 情况)

◆ operator()() [13/16]

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

返回对指定元素的引用(2D 情况)

◆ operator()() [14/16]

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

返回对指定元素的只读引用(2D 情况)

◆ 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 (静态)

该类的文档由以下文件生成: