OpenCV 5.0.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 5.0.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
cv::Mat_< _Tp > クラステンプレート

Mat から派生したテンプレート行列クラス。 続きを読む...

#include <opencv2/core/mat.hpp>

Collaboration diagram for cv::Mat_< _Tp >:

公開型

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

公開メンバ関数

 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)
 
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次元行列を構築する。型に関わらず、step はバイト単位である(!!!)
 
 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)
 ユーザーが割り当てたデータの上に行列を構築する。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) と等価
 
void createSameSize (InputArray arr)
 Mat::create(arr.ndims, arr.size.p, DatType<_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)
 指定した要素への参照を返す(1Dの場合)
 
const _Tpoperator() (int idx0) const
 指定した要素への読み取り専用参照を返す(1次元の場合)
 
_Tpoperator() (int idx0, int idx1, int idx2)
 指定した要素への参照を返す(3Dの場合)
 
const _Tpoperator() (int idx0, int idx1, int idx2) const
 指定した要素への読み取り専用参照を返す(3次元の場合)
 
_Tpoperator() (int row, int col)
 指定した要素への参照を返す(2Dの場合)
 
const _Tpoperator() (int row, int col) const
 指定した要素への読み取り専用参照を返す(2次元の場合)
 
_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
 
- Public Member Functions inherited from 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)
 
 Mat (const MatShape &shape, int type)
 
 Mat (const MatShape &shape, int type, const Scalar &s)
 
 Mat (const MatShape &shape, int type, void *data, const size_t *steps=0)
 
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 (std::initializer_list< int > shape, int type)
 
 Mat (std::initializer_list< int > shape, int type, const Scalar &s)
 
 Mat (std::initializer_list< int > shape, int type, void *data, const size_t *steps=0)
 
 ~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 MatShape &shape, int type)
 
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)
 
void create (std::initializer_list< int > shape, int type)
 
void createSameSize (InputArray arr, int type)
 別の配列と同じサイズの行列を作成する。
 
Mat cross (InputArray m) const
 2つの3要素ベクトルの外積を計算する。
 
void deallocate ()
 内部用途の関数。代わりに 'release' メソッドの使用を検討すること。行列データを解放する
 
int depth () const
 行列要素のビット深度を返す。
 
Mat diag (int d=0) const
 行列から対角成分を抽出する。
 
double dot (InputArray m) const
 2つのベクトルの内積を計算する。
 
size_t elemSize () const
 行列要素のサイズをバイト単位で返す。
 
size_t elemSize1 () const
 各行列要素チャンネルのサイズをバイト単位で返す。
 
bool empty () const
 配列に要素がない場合に true を返す。
 
template<typename _Tp >
MatIterator_< _Tpend ()
 行列イテレータを返し、最後の行列要素の次の位置に設定する。
 
template<typename _Tp >
MatConstIterator_< _Tpend () const
 
void fit (const MatShape &shape, int type)
 
void fit (const std::vector< int > &sizes, int type)
 
void fit (int ndims, const int *sizes, int type)
 
void fit (int rows, int cols, int type)
 create(rows, cols, type) に似ているが、既存のバッファサイズが不足している場合にのみメモリを再割り当てする。
 
void fit (Size size, int type)
 
void fit (std::initializer_list< int > shape, int type)
 
void fitSameSize (InputArray arr, int type)
 createSameSize(arr, type) に似ているが、既存のバッファが不足している場合にのみメモリを再割り当てする。
 
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
 2つの行列の要素ごとの乗算または除算を実行する。
 
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 MatShape &newshape) const
 
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
 データをコピーせずに、2次元行列の形状やチャンネル数を変更する。
 
Mat reshape (int cn, std::initializer_list< int > newshape) 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())
 配列の全要素または一部の要素を指定した値に設定する。
 
MatsetZero ()
 配列のすべての要素を0に設定する。
 
MatShape shape () const
 形状を返す。
 
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)
 
- Static Public Member Functions inherited from 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 (const MatShape &shape, int type)
 
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 (const MatShape &shape, int type)
 
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)
 

Additional Inherited Members

- Public Attributes inherited from cv::Mat
MatAllocatorallocator
 カスタムアロケータ
 
int cols
 
uchardata
 データへのポインタ
 
const uchardataend
 
const uchardatalimit
 
const uchardatastart
 locateROI と adjustROI で使用される補助フィールド
 
int dims
 行列の次元数。>= 2
 
int dummy = 153
 
int flags
 
int rows
 行数と列数。行列が3次元以上の場合は (-1, -1)
 
MatSize size
 
MatStep step
 
UMatData * u
 UMat との連携
 
- Protected Member Functions inherited from 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:
// ... some specific methods
// and
// no new extra fields
};
Template matrix class derived from Mat.
Definition mat.hpp:2581
Comma-separated Matrix Initializer.
Definition mat.hpp:964

クラス Mat_<_Tp> は、Mat クラスの上に乗る薄いテンプレートラッパーである。追加のデータフィールドは一切持たない。このクラスにも Mat にも仮想メソッドはない。したがって、これら2つのクラスへの参照やポインタは、注意を払えば自由に相互変換できる。たとえば次のようになる:

// create a 100x100 8-bit matrix
Mat M(100,100,CV_8U);
// this will be compiled fine. no any data conversion will be done.
// the program is likely to crash at the statement below
M1(99,99) = 1.f;
#define CV_8U
Definition interface.h:54

ほとんどの場合 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)
Returns a reference to the specified array element.
bool eigen(InputArray src, OutputArray eigenvalues, OutputArray eigenvectors=noArray())
Calculates eigenvalues and eigenvectors of a symmetric matrix.

マルチチャンネル画像・行列に Mat_ を使うには、Mat_ のパラメータとして Vec を渡す:

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

Mat_ はC++11の範囲ベースforループと完全に互換性がある。例えば、そのようなループはルックアップテーブルを安全に適用するために使える:

void applyTable(Mat_<uchar>& I, const uchar* const table)
{
for(auto& pixel : I)
{
pixel = table[pixel];
}
}
samples/cpp/image_alignment.cpp, samples/cpp/snippets/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/features/Homography/decompose_homography.cpp, samples/cpp/tutorial_code/features/Homography/homography_from_camera_displacement.cpp, および samples/cpp/tutorial_code/features/Homography/pose_from_homography.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 )

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 )

ユーザーが割り当てたデータの上に行列を構築する。stepは型に関係なくバイト単位(!!!)である。

◆ Mat_() [11/28]

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

ユーザが確保したデータ上にn次元行列を構築する。型に関わらず、step はバイト単位である(!!!)

◆ 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)
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_ から行列を作成する。OpenCV 5.x では、std::vector から単一行の行列を作成する(cols = ベクトルのサイズ)。(旧バージョンでは、行列は単一列であった。)

◆ 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) と等価

◆ createSameSize()

template<typename _Tp >
void cv::Mat_< _Tp >::createSameSize ( InputArray arr)

Mat::create(arr.ndims, arr.size.p, DatType<_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)

指定した要素への参照を返す(1D の場合)

◆ operator()() [10/16]

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

指定した要素への読み取り専用参照を返す(1次元の場合)

◆ 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

指定した要素への読み取り専用参照を返す(3次元の場合)

◆ 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

指定した要素への読み取り専用参照を返す(2次元の場合)

◆ 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

このクラス詳解は次のファイルから抽出されました: