OpenCV 4.5.3(日本語機械翻訳)
|
n-dimensional dense array class [詳解]
#include <mat.hpp>
cv::Mat_< _Tp >に継承されています。
公開型 |
|
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 (int rows, int cols, int type) | |
Mat (Size size, int type) | |
Mat (int rows, int cols, int type, const Scalar &s) | |
Mat (Size size, int type, const Scalar &s) | |
Mat (int ndims, const int *sizes, int type) | |
Mat (const std::vector< int > &sizes, int type) | |
Mat (int ndims, const int *sizes, int type, const Scalar &s) | |
Mat (const std::vector< int > &sizes, int type, const Scalar &s) | |
Mat (const Mat &m) | |
Mat (int rows, int cols, int type, void *data, size_t step=AUTO_STEP) | |
Mat (Size size, int type, void *data, size_t step=AUTO_STEP) | |
Mat (int ndims, const int *sizes, int type, void *data, const size_t *steps=0) | |
Mat (const std::vector< int > &sizes, int type, void *data, const size_t *steps=0) | |
Mat (const Mat &m, const Range &rowRange, const Range &colRange=Range::all()) | |
Mat (const Mat &m, const Rect &roi) | |
Mat (const Mat &m, const Range *ranges) | |
Mat (const Mat &m, const std::vector< Range > &ranges) | |
template<typename _Tp > | |
Mat (const std::vector< _Tp > &vec, 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 , size_t _Nm> | |
Mat (const std::array< _Tp, _Nm > &arr, bool copyData=false) | |
template<typename _Tp , int n> | |
Mat (const Vec< _Tp, n > &vec, bool copyData=true) | |
template<typename _Tp , int m, int n> | |
Mat (const Matx< _Tp, m, n > &mtx, bool copyData=true) | |
template<typename _Tp > | |
Mat (const Point_< _Tp > &pt, bool copyData=true) | |
template<typename _Tp > | |
Mat (const Point3_< _Tp > &pt, bool copyData=true) | |
template<typename _Tp > | |
Mat (const MatCommaInitializer_< _Tp > &commaInitializer) | |
Mat (const cuda::GpuMat &m) | |
GpuMat からデータをダウンロード |
|
~Mat () | |
デストラクタ - 呼び出しrelease()
|
|
Mat & | operator= (const Mat &m) |
代入演算子[【詳解】(英語]
|
|
Mat & | operator= (const MatExpr &expr) |
UMat | getUMat (AccessFlag accessFlags, UMatUsageFlags usageFlags=USAGE_DEFAULT) const |
取得UMatから最大でMat
|
|
Mat | row (int y) const |
指定された行列の行に対する行列ヘッダを作成します.[【詳解】(英語]
|
|
Mat | col (int x) const |
指定された行列列に対する行列ヘッダを作成します.[【詳解】(英語]
|
|
Mat | rowRange (int startrow, int endrow) const |
指定された行スパンの行列ヘッダを作成します.[【詳解】(英語]
|
|
Mat | rowRange (const Range &r) const |
Mat | colRange (int startcol, int endcol) const |
指定された列スパンの行列のヘッダを作成します.[【詳解】(英語]
|
|
Mat | colRange (const Range &r) const |
Mat | diag (int d=0) const |
行列から対角線を抽出します[【詳解】(英語]
|
|
Mat | clone () const CV_NODISCARD |
配列とその基礎となるデータの完全なコピーを作成します.[【詳解】(英語]
|
|
void | copyTo (OutputArray m) const |
行列を別の行列にコピーします.[【詳解】(英語]
|
|
void | copyTo (OutputArray m, InputArray mask) const |
void | convertTo (OutputArray m, int rtype, double alpha=1, double beta=0) const |
任意のスケーリングを伴って,配列を別のデータ型に変換します.[【詳解】(英語]
|
|
void | assignTo (Mat &m, int type=-1) const |
convertTo の関数形式を提供します。[【詳解】(英語]
|
|
Mat & | operator= (const Scalar &s) |
配列の要素の全部または一部を,指定された値に設定します.[【詳解】(英語]
|
|
Mat & | setTo (InputArray value, InputArray mask=noArray()) |
配列の要素の全部または一部を,指定された値に設定します.[【詳解】(英語]
|
|
Mat | reshape (int cn, int rows=0) const |
データをコピーすることなく 2D 行列の形状やチャンネル数を変更します。[【詳解】(英語]
|
|
Mat | reshape (int cn, int newndims, const int *newsz) const |
Mat | reshape (int cn, const std::vector< int > &newshape) const |
MatExpr | t () const |
行列の転置を行います.[【詳解】(英語]
|
|
MatExpr | inv (int method=DECOMP_LU) const |
行列を反転させます。[【詳解】(英語]
|
|
MatExpr | mul (InputArray m, double scale=1) const |
2 つの行列の要素毎の乗算または除算を行います.[【詳解】(英語]
|
|
Mat | cross (InputArray m) const |
2 つの 3 要素のベクトルの外積を計算します.[【詳解】(英語]
|
|
double | dot (InputArray m) const |
2 つのベクトルの内積を計算します.[【詳解】(英語]
|
|
void | create (int rows, int cols, int type) |
必要ならば,新しい配列データを割り当てます.[【詳解】(英語]
|
|
void | create (Size size, int type) |
void | create (int ndims, const int *sizes, int type) |
void | create (const std::vector< int > &sizes, int type) |
void | addref () |
参照カウンタをインクリメントします。[【詳解】(英語]
|
|
void | release () |
必要に応じて,参照カウンタをデクリメントし,行列を解放します。[【詳解】(英語]
|
|
void | deallocate () |
内部利用関数.代わりに 'release' メソッドの利用を検討してください. |
|
void | copySize (const Mat &m) |
内部使用関数.配列 _size, _step を適切に再割り当てします. |
|
void | reserve (size_t sz) |
特定の行数のためにスペースを確保します。[【詳解】(英語]
|
|
void | reserveBuffer (size_t sz) |
特定のバイト数の領域を確保します。[【詳解】(英語]
|
|
void | resize (size_t sz) |
マトリックスの行数を変更します。[【詳解】(英語]
|
|
void | resize (size_t sz, const Scalar &s) |
void | push_back_ (const void *elem) |
内部関数 |
|
template<typename _Tp > | |
void | push_back (const _Tp &elem) |
行列の最下部に要素を追加します。[【詳解】(英語]
|
|
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 Mat &m) |
void | pop_back (size_t nelems=1) |
行列の最下部から要素を削除します.[【詳解】(英語]
|
|
void | locateROI (Size &wholeSize, Point &ofs) const |
行列のヘッダを親行列の中に配置します。[【詳解】(英語]
|
|
Mat & | adjustROI (int dtop, int dbottom, int dleft, int dright) |
親行列内の部分行列のサイズと位置を調整します.[【詳解】(英語]
|
|
Mat | operator() (Range rowRange, Range colRange) const |
矩形の部分行列を抽出します。[【詳解】(英語]
|
|
Mat | operator() (const Rect &roi) const |
Mat | operator() (const Range *ranges) const |
Mat | operator() (const std::vector< Range > &ranges) const |
template<typename _Tp > | |
operator std::vector< _Tp > () const | |
template<typename _Tp , int n> | |
operator Vec< _Tp, n > () 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 | |
bool | isContinuous () const |
行列が連続しているかどうかを報告します。[【詳解】(英語]
|
|
bool | isSubmatrix () const |
行列が別の行列の部分行列である場合は,真を返します. |
|
size_t | elemSize () const |
行列の要素サイズをバイト単位で返します。[【詳解】(英語]
|
|
size_t | elemSize1 () const |
各行列要素のチャンネルのサイズをバイト単位で返します。[【詳解】(英語]
|
|
int | type () const |
行列要素の型を返します。[【詳解】(英語]
|
|
int | depth () const |
行列の要素の深さを返します。[【詳解】(英語]
|
|
int | channels () const |
マトリックスチャンネルの数を返す。[【詳解】(英語]
|
|
size_t | step1 (int i=0) const |
正規化されたステップを返します.[【詳解】(英語]
|
|
bool | empty () const |
配列の要素が存在しない場合は,真を返します.[【詳解】(英語]
|
|
size_t | total () const |
配列の総要素数を返します。[【詳解】(英語]
|
|
size_t | total (int startDim, int endDim=INT_MAX) const |
配列の総要素数を返します。[【詳解】(英語]
|
|
int | checkVector (int elemChannels, int depth=-1, bool requireContinuous=true) const |
uchar * | ptr (int i0=0) |
指定された行列の行へのポインタを返します。[【詳解】(英語]
|
|
const uchar * | ptr (int i0=0) const |
uchar * | ptr (int row, int col) |
const uchar * | ptr (int row, int col) const |
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) |
template<typename _Tp > | |
const _Tp * | ptr (int row, int col) const |
template<typename _Tp > | |
_Tp * | ptr (int i0, int i1, int i2) |
template<typename _Tp > | |
const _Tp * | ptr (int i0, int i1, int i2) const |
template<typename _Tp > | |
_Tp * | ptr (const int *idx) |
template<typename _Tp > | |
const _Tp * | ptr (const int *idx) const |
template<typename _Tp , int n> | |
_Tp * | ptr (const Vec< int, n > &idx) |
template<typename _Tp , int n> | |
const _Tp * | ptr (const Vec< int, n > &idx) const |
template<typename _Tp > | |
_Tp & | at (int i0=0) |
指定された配列要素への参照を返します。[【詳解】(英語]
|
|
template<typename _Tp > | |
const _Tp & | at (int i0=0) const |
template<typename _Tp > | |
_Tp & | at (int row, int col) |
template<typename _Tp > | |
const _Tp & | at (int row, int col) const |
template<typename _Tp > | |
_Tp & | at (int i0, int i1, int i2) |
template<typename _Tp > | |
const _Tp & | at (int i0, int i1, int i2) const |
template<typename _Tp > | |
_Tp & | at (const int *idx) |
template<typename _Tp > | |
const _Tp & | at (const int *idx) const |
template<typename _Tp , int n> | |
_Tp & | at (const Vec< int, n > &idx) |
template<typename _Tp , int n> | |
const _Tp & | at (const Vec< int, n > &idx) const |
template<typename _Tp > | |
_Tp & | at (Point pt) |
template<typename _Tp > | |
const _Tp & | at (Point pt) const |
template<typename _Tp > | |
MatIterator_< _Tp > | begin () |
行列のイテレータを返し,それを行列の最初の要素に設定します.[【詳解】(英語]
|
|
template<typename _Tp > | |
MatConstIterator_< _Tp > | begin () const |
template<typename _Tp > | |
std::reverse_iterator< MatIterator_< _Tp > > | rbegin () |
と同じです.begin()と同じですが,逆方向の走査については |
|
template<typename _Tp > | |
std::reverse_iterator< MatConstIterator_< _Tp > > | rbegin () const |
template<typename _Tp > | |
MatIterator_< _Tp > | end () |
行列のイテレータを返し,それを最後の行列要素の後に設定します.[【詳解】(英語]
|
|
template<typename _Tp > | |
MatConstIterator_< _Tp > | end () const |
template<typename _Tp > | |
std::reverse_iterator< MatIterator_< _Tp > > | rend () |
と同じです.end()と同じですが,逆方向の走査については |
|
template<typename _Tp > | |
std::reverse_iterator< MatConstIterator_< _Tp > > | rend () const |
template<typename _Tp , typename Functor > | |
void | forEach (const Functor &operation) |
与えられたファンクタを,すべての行列要素に対して並列に実行します.[【詳解】(英語]
|
|
template<typename _Tp , typename Functor > | |
void | forEach (const Functor &operation) const |
Mat (Mat &&m) | |
Mat & | operator= (Mat &&m) |
void | updateContinuityFlag () |
内部使用法:継続性フラグを更新 |
|
静的公開メンバ関数 |
|
static Mat | diag (const Mat &d) |
対角線上の行列を作成します[【詳解】(英語]
|
|
static MatExpr | zeros (int rows, int cols, int type) |
指定されたサイズと型の 0 個の配列を返します.[【詳解】(英語]
|
|
static MatExpr | zeros (Size size, int type) |
static MatExpr | zeros (int ndims, const int *sz, int type) |
static MatExpr | ones (int rows, int cols, int type) |
指定されたサイズと型の,すべての 1 の配列を返します.[【詳解】(英語]
|
|
static MatExpr | ones (Size size, int type) |
static MatExpr | ones (int ndims, const int *sz, int type) |
static MatExpr | eye (int rows, int cols, int type) |
指定されたサイズと型の単位行列を返します。[【詳解】(英語]
|
|
static MatExpr | eye (Size size, int type) |
static MatAllocator * | getStdAllocator () |
そして,標準的なアロケータ |
|
static MatAllocator * | getDefaultAllocator () |
static void | setDefaultAllocator (MatAllocator *allocator) |
公開変数類 |
|
int | flags |
int | dims |
行列の次元,>= 2 |
|
int | rows |
行列の行と列の数,または,行列が 2 次元以上の場合は (-1, -1) です. |
|
int | cols |
uchar * | data |
データへのポインタ |
|
const uchar * | datastart |
locateROIおよびadjustROIで使用されるヘルパーフィールド |
|
const uchar * | dataend |
const uchar * | datalimit |
MatAllocator * | allocator |
カスタムアロケータ |
|
UMatData * | u |
との相互作用UMat
|
|
MatSize | size |
MatStep | step |
限定公開メンバ関数 |
|
template<typename _Tp , typename Functor > | |
void | forEach_impl (const Functor &operation) |
このクラスはMatは,n-dimensional dense numerical single-channel or multi-channel arrayを表します.このクラスは,実数または複素数のベクトルや行列,グレースケールやカラーの画像,ボクセルボリューム,ベクトルフィールド,点群,テンソル,ヒストグラム(ただし,非常に高次元のヒストグラムを格納するにはSparseMat). 配列のデータレイアウトはM
のデータレイアウトは,配列M.step[]
で定義されており,これにより,要素のアドレスここで
のように計算されます.
2次元配列の場合,上の式は次のようになります.
なおM.step[i] >= M.step[i+1]
(実際にはM.step[i] >= M.step[i+1]*M.size[i+1]
). つまり,2次元の行列は行ごとに,3次元の行列は面ごとに,それぞれ格納されているということです.M.step[M.dims-1] は最小であり,常に要素サイズ M.elemSize() と等しい.
のデータレイアウトはMatのデータレイアウトは,Numpy(ndarray),Win32(independent device bitmaps)など,標準的なツールキットやSDKで提供されている大部分の密な配列タイプと互換性があります.つまり,M.stepを使用するあらゆる配列と互換性があります.ステップ(またはストライド)を使ってピクセルの位置を計算するあらゆる配列と互換性があります。このような互換性があるため、ユーザーが割り当てたデータのMatヘッダを作成し,OpenCVの関数を用いて,その場で処理することができます.
オブジェクトを作成するには,さまざまな方法があります.Matオブジェクトを作成する方法はたくさんあります.最も一般的な方法を以下に示します.
clone()
メソッドを使用して,サブ行列を抽出します.<< operator
の後に、定数、変数、式などの値をコンマで区切って記述します。また、コンパイルエラーを避けるために、余分な括弧が必要であることにも注意してください。配列が作成されると,参照カウントの仕組みによって自動的に管理されます.配列のヘッダがユーザが割り当てたデータの上に構築されている場合は,そのデータを自分で処理する必要があります.配列データは、誰からも指されなくなると解放されます。配列デストラクタが呼ばれる前に,配列ヘッダが指すデータを解放したい場合はMat::release().
配列クラスについて次に学ぶべき重要なことは,要素のアクセスです.このマニュアルでは,すでに各配列要素のアドレスを計算する方法を説明しました。通常,コードの中で直接計算式を使用する必要はありません.配列の要素の型がわかっていれば(メソッドMat::type()メソッドで取得できます),2次元配列の要素のように2次元配列の要素にアクセスできます。
と仮定するとM
が倍精度浮動小数点配列であると仮定します。このメソッドには,異なる次元数に対応したいくつかのバリエーションがあります.
2次元配列の行全体を処理する必要がある場合,最も効率的な方法は,最初に行へのポインタを取得してから,C言語のプレーンな演算子 [] を使用することです.
上の例のように,実際には配列の形状に依存しない演算もあります.上の例のように,配列の形状によらず,配列の要素を1つずつ(あるいは,同じ座標を持つ複数の配列の要素を)処理するものがあります(例えば,配列の加算など).このような演算を要素ワイズ. すべての入出力配列が連続しているかどうか,つまり,各行の終わりに隙間がないかどうかをチェックすることは意味があります.もしそうであれば,それらを長い1行として処理します.
連続した行列の場合,外側のループ本体は一度だけ実行されます.連続した行列の場合,外側のループ本体は1回だけ実行されるので,オーバーヘッドが小さくなり,特に小さい行列の場合に顕著です.
最後に,連続した行の間のギャップをスキップすることができる,STLスタイルのイテレータがあります.
行列イテレータはランダムアクセスイテレータなので,以下のような任意のSTLアルゴリズムに渡すことができます.std::sort().
cv::Mat::Mat | ( | ) |
これらは行列を形成する様々なコンストラクタです。AutomaticAllocation で述べたように,多くの場合,デフォルトコンストラクタで十分であり,適切な行列が OpenCV の関数によって確保されます.構築された行列は,さらに別の行列や行列式に割り当てることができ,またMat::create. 前者の場合,古い内容は参照されなくなります.
cv::Mat::Mat | ( | int | rows, |
int | cols, | ||
int | type | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
rows | 2D配列の行数。 |
cols | 2 次元配列の列数. |
type | 配列の種類.1-4 チャンネルの行列を作成する場合は CV_8UC1, ..., CV_64FC4 を利用し,マルチチャンネル(最大 CV_CN_MAX チャンネル)の行列を作成する場合は CV_8UC(n), ..., CV_64FC(n) を利用します. |
cv::Mat::Mat | ( | Size | size, |
int | type | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
size | 2次元配列のサイズ.Size(cols, rows) .Size() のコンストラクタでは,行数と列数が逆順になります. |
type | 配列の種類.1-4 チャンネルの行列を作成する場合は CV_8UC1, ..., CV_64FC4 を利用し,マルチチャンネル(最大 CV_CN_MAX チャンネル)の行列を作成する場合は CV_8UC(n), ..., CV_64FC(n) を利用します. |
cv::Mat::Mat | ( | int | rows, |
int | cols, | ||
int | type, | ||
const Scalar & | s | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
rows | 2D配列の行数。 |
cols | 2 次元配列の列数. |
type | 配列の種類.1-4 チャンネルの行列を作成する場合は CV_8UC1, ..., CV_64FC4 を利用し,マルチチャンネル(最大 CV_CN_MAX チャンネル)の行列を作成する場合は CV_8UC(n), ..., CV_64FC(n) を利用します. |
s | 各行列要素を初期化するためのオプション値.コンストラクション後にすべての行列要素を特定の値に設定するには,代入演算子を使用します.Mat::operator=(const Scalar& value). |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
size | 2次元配列のサイズ.Size(cols, rows) .Size() のコンストラクタでは,行数と列数が逆順になります. |
type | 配列の種類.1-4 チャンネルの行列を作成する場合は CV_8UC1, ..., CV_64FC4 を利用し,マルチチャンネル(最大 CV_CN_MAX チャンネル)の行列を作成する場合は CV_8UC(n), ..., CV_64FC(n) を利用します. |
s | 各行列要素を初期化するためのオプション値.コンストラクション後にすべての行列要素を特定の値に設定するには,代入演算子を使用します.Mat::operator=(const Scalar& value). |
cv::Mat::Mat | ( | int | ndims, |
const int * | sizes, | ||
int | type | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
ndims | 配列の次元。 |
sizes | n次元配列の形状を指定する整数の配列。 |
type | 配列の種類.1-4 チャンネルの行列を作成する場合は CV_8UC1, ..., CV_64FC4 を利用し,マルチチャンネル(最大 CV_CN_MAX チャンネル)の行列を作成する場合は CV_8UC(n), ..., CV_64FC(n) を利用します. |
cv::Mat::Mat | ( | const std::vector< int > & | sizes, |
int | type | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
sizes | n次元配列の形状を指定する整数の配列。 |
type | 配列の種類.1-4 チャンネルの行列を作成する場合は CV_8UC1, ..., CV_64FC4 を利用し,マルチチャンネル(最大 CV_CN_MAX チャンネル)の行列を作成する場合は CV_8UC(n), ..., CV_64FC(n) を利用します. |
cv::Mat::Mat | ( | int | ndims, |
const int * | sizes, | ||
int | type, | ||
const Scalar & | s | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
ndims | 配列の次元。 |
sizes | n次元配列の形状を指定する整数の配列。 |
type | 配列の種類.1-4 チャンネルの行列を作成する場合は CV_8UC1, ..., CV_64FC4 を利用し,マルチチャンネル(最大 CV_CN_MAX チャンネル)の行列を作成する場合は CV_8UC(n), ..., CV_64FC(n) を利用します. |
s | 各行列要素を初期化するためのオプション値.コンストラクション後にすべての行列要素を特定の値に設定するには,代入演算子を使用します.Mat::operator=(const Scalar& value). |
cv::Mat::Mat | ( | const std::vector< int > & | sizes, |
int | type, | ||
const Scalar & | s | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
sizes | n次元配列の形状を指定する整数の配列。 |
type | 配列の種類.1-4 チャンネルの行列を作成する場合は CV_8UC1, ..., CV_64FC4 を利用し,マルチチャンネル(最大 CV_CN_MAX チャンネル)の行列を作成する場合は CV_8UC(n), ..., CV_64FC(n) を利用します. |
s | 各行列要素を初期化するためのオプション値.コンストラクション後にすべての行列要素を特定の値に設定するには,代入演算子を使用します.Mat::operator=(const Scalar& value). |
cv::Mat::Mat | ( | const Mat & | m | ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
m | 構築された行列に代入される配列(全体または一部)。これらのコンストラクタによってデータがコピーされることはありません。代わりに、m個のデータまたはそのサブアレイを指し示すヘッダが構築され、それに関連付けられます。参照カウンタがあれば,それもインクリメントされます。したがって,このようなコンストラクタを使って生成された行列を変更すると,m の対応する要素も変更されます.副配列の独立したコピーを持ちたい場合は、以下を使用します。Mat::clone(). |
cv::Mat::Mat | ( | int | rows, |
int | cols, | ||
int | type, | ||
void * | data, | ||
size_t |
step
=
AUTO_STEP |
||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
rows | 2D配列の行数。 |
cols | 2 次元配列の列数. |
type | 配列の種類.1-4 チャンネルの行列を作成する場合は CV_8UC1, ..., CV_64FC4 を利用し,マルチチャンネル(最大 CV_CN_MAX チャンネル)の行列を作成する場合は CV_8UC(n), ..., CV_64FC(n) を利用します. |
data | ユーザデータへのポインタ.data と step パラメータを引数にとる行列コンストラクタは,行列データを確保しません.代わりに,指定されたデータを指し示す行列ヘッダを初期化するだけで,データのコピーは行われません.この操作は非常に効率的で,OpenCV の関数を用いて外部データを処理するのに利用できます.なお,外部データは自動的には解放されないので,注意が必要です. |
step | 行列の各行が占めるバイト数。この値には,各行の最後にパディングバイトがある場合は,それを含めなければいけません。このパラメータがない場合(AUTO_STEPに設定されている場合),パディングはないとみなされ,実際のステップは cols*elemSize() として計算されます.参照Mat::elemSize. |
cv::Mat::Mat | ( | Size | size, |
int | type, | ||
void * | data, | ||
size_t |
step
=
AUTO_STEP |
||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
size | 2次元配列のサイズ.Size(cols, rows) .Size() のコンストラクタでは,行数と列数が逆順になります. |
type | 配列の種類.1-4 チャンネルの行列を作成する場合は CV_8UC1, ..., CV_64FC4 を利用し,マルチチャンネル(最大 CV_CN_MAX チャンネル)の行列を作成する場合は CV_8UC(n), ..., CV_64FC(n) を利用します. |
data | ユーザデータへのポインタ.data と step パラメータを引数にとる行列コンストラクタは,行列データを確保しません.代わりに,指定されたデータを指し示す行列ヘッダを初期化するだけで,データのコピーは行われません.この操作は非常に効率的で,OpenCV の関数を用いて外部データを処理するのに利用できます.なお,外部データは自動的には解放されないので,注意が必要です. |
step | 行列の各行が占めるバイト数。この値には,各行の最後にパディングバイトがある場合は,それを含めなければいけません。このパラメータがない場合(AUTO_STEPに設定されている場合),パディングはないとみなされ,実際のステップは cols*elemSize() として計算されます.参照Mat::elemSize. |
cv::Mat::Mat | ( | int | ndims, |
const int * | sizes, | ||
int | type, | ||
void * | data, | ||
const size_t * |
steps
=
0 |
||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
ndims | 配列の次元。 |
sizes | n次元配列の形状を指定する整数の配列。 |
type | 配列の種類.1-4 チャンネルの行列を作成する場合は CV_8UC1, ..., CV_64FC4 を利用し,マルチチャンネル(最大 CV_CN_MAX チャンネル)の行列を作成する場合は CV_8UC(n), ..., CV_64FC(n) を利用します. |
data | ユーザデータへのポインタ.data と step パラメータを引数にとる行列コンストラクタは,行列データを確保しません.代わりに,指定されたデータを指し示す行列ヘッダを初期化するだけで,データのコピーは行われません.この操作は非常に効率的で,OpenCV の関数を用いて外部データを処理するのに利用できます.なお,外部データは自動的には解放されないので,注意が必要です. |
steps | 多次元配列の場合の ndims-1 ステップの配列(最後のステップは,常に要素サイズに設定されます).指定されない場合,行列は連続しているとみなされます. |
cv::Mat::Mat | ( | const std::vector< int > & | sizes, |
int | type, | ||
void * | data, | ||
const size_t * |
steps
=
0 |
||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
sizes | n次元配列の形状を指定する整数の配列。 |
type | 配列の種類.1-4 チャンネルの行列を作成する場合は CV_8UC1, ..., CV_64FC4 を利用し,マルチチャンネル(最大 CV_CN_MAX チャンネル)の行列を作成する場合は CV_8UC(n), ..., CV_64FC(n) を利用します. |
data | ユーザデータへのポインタ.data と step パラメータを引数にとる行列コンストラクタは,行列データを確保しません.代わりに,指定されたデータを指し示す行列ヘッダを初期化するだけで,データのコピーは行われません.この操作は非常に効率的で,OpenCV の関数を用いて外部データを処理するのに利用できます.なお,外部データは自動的には解放されないので,注意が必要です. |
steps | 多次元配列の場合の ndims-1 ステップの配列(最後のステップは,常に要素サイズに設定されます).指定されない場合,行列は連続しているとみなされます. |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
m | 構築された行列に代入される配列(全体または一部)。これらのコンストラクタによってデータがコピーされることはありません。代わりに、m個のデータまたはそのサブアレイを指し示すヘッダが構築され、それに関連付けられます。参照カウンタがあれば,それもインクリメントされます。したがって,このようなコンストラクタを使って生成された行列を変更すると,m の対応する要素も変更されます.副配列の独立したコピーを持ちたい場合は、以下を使用します。Mat::clone(). |
rowRange | Range取るべきm行の 通常通り,範囲の開始は包含的で,範囲の終了は排他的です.すべての行を扱うには,Range::all() を利用してください。 |
colRange | Range取るべきm個の列の数。すべての列を取得するには,Range::all()を利用してください. |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
m | 構築された行列に代入される配列(全体または一部)。これらのコンストラクタによってデータがコピーされることはありません。代わりに、m個のデータまたはそのサブアレイを指し示すヘッダが構築され、それに関連付けられます。参照カウンタがあれば,それもインクリメントされます。したがって,このようなコンストラクタを使って生成された行列を変更すると,m の対応する要素も変更されます.副配列の独立したコピーを持ちたい場合は、以下を使用します。Mat::clone(). |
roi | 興味のある領域。 |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
m | 構築された行列に代入される配列(全体または一部)。これらのコンストラクタによってデータがコピーされることはありません。代わりに、m個のデータまたはそのサブアレイを指し示すヘッダが構築され、それに関連付けられます。参照カウンタがあれば,それもインクリメントされます。したがって,このようなコンストラクタを使って生成された行列を変更すると,m の対応する要素も変更されます.副配列の独立したコピーを持ちたい場合は、以下を使用します。Mat::clone(). |
ranges | 各次元のm個の選択された範囲の配列. |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
m | 構築された行列に代入される配列(全体または一部)。これらのコンストラクタによってデータがコピーされることはありません。代わりに、m個のデータまたはそのサブアレイを指し示すヘッダが構築され、それに関連付けられます。参照カウンタがあれば,それもインクリメントされます。したがって,このようなコンストラクタを使って生成された行列を変更すると,m の対応する要素も変更されます.副配列の独立したコピーを持ちたい場合は、以下を使用します。Mat::clone(). |
ranges | 各次元のm個の選択された範囲の配列. |
|
explicit |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
vec | 行列を構成する要素を持つ STL ベクトル.行列は 1 列で,行数はベクトルの要素数と同じです.行列の型は,ベクトル要素の型と一致します.コンストラクタは任意の型を扱うことができますが,そのためには適切に宣言されたDataType. つまり,ベクトル要素は,プリミティブな数値または単一型の数値タプルでなければなりません。混合型構造はサポートされていません。対応するコンストラクタは明示的です。STL のベクトルは,自動的にインスタンスに変換されません.Matインスタンスに自動的に変換されないので,明示的に Mat(vec) と書く必要があります.データを行列にコピーしない限り( copyData=true ),ベクトルデータの再割り当てが発生する可能性があるため,新しい要素はベクトルに追加されず,その結果,行列データポインタは無効になります. |
copyData | STL vectorの基礎データを,新しく構築された行列にコピーする(true)か,共有する(false)かを指定するフラグ.データがコピーされると,割り当てられたバッファは,参照カウント機構を使って管理されます.Mat参照カウント機構を用いて管理されます。データが共有されている間は,参照カウンタは NULL であり,行列がデストラクションされない限りデータを解放してはいけません。 |
|
explicit |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
|
explicit |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
|
explicit |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
|
explicit |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
|
explicit |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
|
explicit |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
|
explicit |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
|
explicit |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
void cv::Mat::addref | ( | ) |
参照カウンタをインクリメントします。
このメソッドは,行列データに関連付けられた参照カウンタをインクリメントします。行列のヘッダが外部のデータセットを指している場合(詳しくはMat::Matを参照),参照カウンタは NULL であり,このメソッドはこの場合には何の効果もありません.通常,メモリリークを避けるために,このメソッドを明示的に呼び出すべきではありません.このメソッドは,行列の代入演算子によって暗黙のうちに呼び出されます。参照カウンタのインクリメントは,それをサポートするプラットフォームではアトミックな操作です.したがって,同じ行列を異なるスレッドで非同期的に操作しても安全です.
Mat & cv::Mat::adjustROI | ( | int | dtop, |
int | dbottom, | ||
int | dleft, | ||
int | dright | ||
) |
親行列内の部分行列のサイズと位置を調整します.
このメソッドは,次のように補足されますMat::locateROI. これらの関数の典型的な使い方は,親行列内の部分行列の位置を決定し,その位置を何らかの方法でシフトすることです.典型的には,ROI の外側にあるピクセルを考慮に入れる必要がある場合のフィルタリング処理に必要になることがあります.すべてのメソッドのパラメーターが正の値の場合、ROI はすべての方向に指定された量だけ成長する必要があります。
この例では,行列のサイズが各方向に4要素ずつ増加します.マトリックスは、左に2要素、上に2要素シフトされ、5x5カーネルによるフィルタリングに必要なすべてのピクセルが取り込まれます。
adjustROI は,調整後の ROI を親行列の内部に収めるようにします.つまり,調整後の ROI の境界は,親行列の境界によって制約されます.例えば,部分行列 A が親行列の最初の行に位置していて,A.adjustROI(2, 2, 2, 2) と呼ばれた場合,A は上方向には増加しません.
この関数は,OpenCV のフィルタリング関数(filter2D や,モルフォロジカルオペレーションなど)によって,内部的に利用されます.
dtop | 上の部分行列の境界を上にシフトします. |
dbottom | 下の部分行列の境界を,下方向にシフトします. |
dleft | 左の部分行列の境界を,左にシフトします. |
dright | 右の部分行列の境界を右にシフトします。 |
void cv::Mat::assignTo | ( | Mat & | m, |
int |
type
=
-1 |
||
) | const |
convertTo の関数形式を提供します。
これは,エンジンから呼び出される内部的に使用されるメソッドです。MatrixExpressionsエンジンで使用されます。
m | 出力配列. |
type | 変換先の配列の深さを指定します(変換元の型と同じにする場合は -1 を指定します)。 |
_Tp & cv::Mat::at | ( | const int * | idx | ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
idx | 配列のMat::dimsインデックス。 |
const _Tp & cv::Mat::at | ( | const int * | idx | ) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
idx | 配列のMat::dimsインデックス。 |
_Tp & cv::Mat::at | ( | const Vec< int, n > & | idx | ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
const _Tp & cv::Mat::at | ( | const Vec< int, n > & | idx | ) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
_Tp & cv::Mat::at | ( | int | i0, |
int | i1, | ||
int | i2 | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
i0 | 0次元のインデックス |
i1 | 1次元目のインデックス |
i2 | 2次元のインデックス |
const _Tp & cv::Mat::at | ( | int | i0, |
int | i1, | ||
int | i2 | ||
) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
i0 | 0次元のインデックス |
i1 | 1次元目のインデックス |
i2 | 2次元のインデックス |
_Tp & cv::Mat::at | ( | int |
i0
=
0
|
) |
指定された配列要素への参照を返します。
テンプレートメソッドは,指定された配列要素への参照を返します。パフォーマンスを向上させるため,インデックスの範囲チェックは Debug 構成でのみ行われます。
なお,1つのインデックス(i)を持つバリアントは,1行または1列の2次元配列の要素にアクセスするために使用できます。例えば,A が 1 x N の浮動小数点行列で,B が M x 1 の整数行列であるとすると,次のように記述します.A.at<float>(k+4)
およびB.at<int>(2*i+1)
の代わりにA.at<float>(0,k+4)
およびB.at<int>(2*i+1,0)
となります。
以下の例では,ヒルベルト行列を初期化しています.
at 演算子で使用するサイズ識別子は、ランダムに選択できないことに注意してください。これは、データを取得しようとしている画像に依存します。以下の表は、この点をよりよく理解するためのものです。
CV_8U
型ならば
Mat.at<uchar>(y,x)
.CV_8S
型ならば
Mat.at<schar>(y,x)
.CV_16U
型ならば
Mat.at<ushort>(y,x)
.CV_16S
型ならば
Mat.at<short>(y,x)
.CV_32S
型ならば
Mat.at<int>(y,x)
.CV_32F
型ならば
Mat.at<float>(y,x)
.CV_64F
型ならば
Mat.at<double>(y,x)
.i0 | 0次元のインデックス |
const _Tp & cv::Mat::at | ( | int |
i0
=
0
|
) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
i0 | 0次元のインデックス |
_Tp & cv::Mat::at | ( | int | row, |
int | col | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
row | 0次元のインデックス |
col | 1次元目のインデックス |
const _Tp & cv::Mat::at | ( | int | row, |
int | col | ||
) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
row | 0次元のインデックス |
col | 1次元目のインデックス |
_Tp & cv::Mat::at | ( | Point | pt | ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。2次元配列のための特別なバージョンです(特に画像のピクセルを参照するのに便利です)。
pt | Point(j,i) として指定された要素の位置。 |
const _Tp & cv::Mat::at | ( | Point | pt | ) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。2次元配列のための特別なバージョンです(特に画像のピクセルを参照するのに便利です)。
pt | Point(j,i) として指定された要素の位置。 |
MatIterator_< _Tp > cv::Mat::begin | ( | ) |
行列のイテレータを返し,それを行列の最初の要素に設定します.
これらのメソッドは,行列の読み取り専用あるいは読み取り/書き込み可能なイテレータを返します.マトリックスのイテレータの使い方は,双方向の STL イテレータの使い方とよく似ています.以下の例では,アルファブレンディング関数を行列イテレータを使って書き換えています.
int cv::Mat::channels | ( | ) | const |
マトリックスチャンネルの数を返す。
このメソッドは,行列のチャンネル数を返します.
int cv::Mat::checkVector | ( | int | elemChannels, |
int |
depth
=
-1 ,
|
||
bool |
requireContinuous
=
true |
||
) | const |
elemChannels | 行列が持つべきチャンネル数または列数。2 次元の行列の場合,行列の列数が 1 つだけならば, elemChannels 個のチャンネルを持たなければならず,行列のチャンネル数が 1 つだけならば, elemChannels 個の列を持たなければなりません.3 次元の行列の場合は,1 つのチャンネルのみを持つ必要があります.さらに,平面の数が1ではない場合は,各平面内の行数は1でなければいけません;各平面内の行数が1ではない場合は,平面の数は1でなければいけません. |
depth | 行列が持つべき深さ.任意の深さでよい場合は,これを -1 に設定します. |
requireContinuous | 行列が連続であることを要求する場合は,これを true に設定します. |
以下のコードは,2 次元の行列に対する使用例です.
次のコードは,3 次元の行列に対する使用例です.
Mat cv::Mat::clone | ( | ) | const |
配列とその基礎となるデータの完全なコピーを作成します.
このメソッドは,配列の完全なコピーを作成します.元の step[] は考慮されません.そのため,配列のコピーは,以下の領域を占める連続した配列になります.total()*elemSize() バイトを占有します.
Mat cv::Mat::col | ( | int | x | ) | const |
指定された行列列に対する行列ヘッダを作成します.
このメソッドは,指定された行列列に対する新しいヘッダを作成し,それを返します.これは,行列のサイズに関わらず,O(1) の処理です.新しい行列の基礎データは,元の行列と共有されます.説明も参照してください.Mat::row説明を参照してください。
x | 0ベースの列インデックス. |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
r | Range開始インデックスと終了インデックスの両方を含む構造体. |
Mat cv::Mat::colRange | ( | int | startcol, |
int | endcol | ||
) | const |
void cv::Mat::convertTo | ( | OutputArray | m, |
int | rtype, | ||
double |
alpha
=
1 ,
|
||
double |
beta
=
0 |
||
) | const |
任意のスケーリングを伴って,配列を別のデータ型に変換します.
このメソッドは,ソースピクセルの値をターゲットのデータ型に変換します.オーバーフローの可能性を避けるために,最後に saturate_cast<> が適用されます.
m | 出力行列.操作前に適切なサイズや型でなかった場合は,再割り当てされます. |
rtype | 希望する出力行列の型,あるいは,チャンネル数が入力と同じであることから,むしろ深さを表します.rtypeが負の値の場合,出力行列は入力と同じ型になります. |
alpha | オプションのスケールファクタ. |
beta | オプションで,スケーリングされた値に加えられるデルタ. |
void cv::Mat::copyTo | ( | OutputArray | m | ) | const |
行列を別の行列にコピーします.
このメソッドは,行列のデータを別の行列にコピーします.データをコピーする前に,このメソッドは .NET を起動します.
を呼び出し,必要に応じてコピー先の行列が再割り当てされるようにします.m.copyTo(m); は問題なく動作しますが,この関数は,コピー元とコピー先の行列が部分的に重なっている場合には対応しません.
操作マスクが指定されている場合,上記の呼び出しではMat::createが行列を再割り当てした場合,データをコピーする前に,新しく割り当てられた行列がすべてゼロで初期化されます.
m | コピー先の行列。演算前に適切なサイズや型を持っていない場合は,再割り当てされます. |
void cv::Mat::copyTo | ( | OutputArray | m, |
InputArray | mask | ||
) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
m | コピー先の行列。演算前に適切なサイズや型を持っていない場合は,再割り当てされます. |
mask | this と同じサイズの演算マスク.その非0の要素は,どの行列要素をコピーする必要があるかを示します.このマスクは,CV_8U型でなければならず,1つまたは複数のチャンネルを持つことができます. |
void cv::Mat::create | ( | const std::vector< int > & | sizes, |
int | type | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
sizes | 新しい配列の形状を指定する整数の配列. |
type | 新しい行列の種類. |
void cv::Mat::create | ( | int | ndims, |
const int * | sizes, | ||
int | type | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
ndims | 新しい配列の次元。 |
sizes | 新しい配列の形状を指定する整数の配列. |
type | 新しい行列の種類. |
void cv::Mat::create | ( | int | rows, |
int | cols, | ||
int | type | ||
) |
必要ならば,新しい配列データを割り当てます.
これは,重要なメソッドの1つです.Matメソッドの1つです.配列を生成する新形式の OpenCV 関数やメソッドのほとんどは,各出力配列に対してこのメソッドを呼び出します.このメソッドは,以下のアルゴリズムを利用します.
このような方式は、メモリ管理を堅牢かつ効率的にすると同時に、余計なタイプミスを避けるのにも役立ちます。つまり,通常は出力配列を明示的に確保する必要はありません。つまり,:
と書く代わりに,単に
なぜなら, cvtColor や多くの OpenCV の関数は,内部で出力配列を呼び出しているからです.Mat::create()出力配列を内部的に呼び出しているからです.
rows | 新しい行数. |
cols | 新しい行数,新しい列数. |
type | 新しい行列の種類. |
void cv::Mat::create | ( | Size | size, |
int | type | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
size | 代替となる新しい行列のサイズ指定.サイズ(cols, rows) |
type | 新しい行列の種類. |
Mat cv::Mat::cross | ( | InputArray | m | ) | const |
2 つの 3 要素のベクトルの外積を計算します.
このメソッドは,2 つの 3 要素のベクトルの外積を計算します.ベクトルは,同じ形状とサイズの 3 要素浮動小数点ベクトルでなければなりません.結果は、オペランドと同じ形と型の別の 3 要素ベクトルです。
m | もう一つのクロスプロダクトのオペランドです。 |
int cv::Mat::depth | ( | ) | const |
行列の要素の深さを返します。
このメソッドは,行列要素の深さ(個々のチャンネルの型)の識別子を返します。例えば,16 ビット符号付き要素の配列の場合,このメソッドは CV_16S を返します.行列の型の完全なリストには,以下の値が含まれています.
対角線上の行列を作成します
このメソッドは,指定された主対角線から正方対角線行列を作成します.
d | 主対角線を表す 1 次元の行列。 |
Mat cv::Mat::diag | ( | int |
d
=
0
|
) | const |
double cv::Mat::dot | ( | InputArray | m | ) | const |
2 つのベクトルの内積を計算します.
このメソッドは,2つの行列のドット積を計算します.行列が1列または1行のベクトルではない場合,上から下,左から右へのスキャン順序が使用され,1次元ベクトルとして扱われます.ベクトルのサイズとタイプは同じでなければなりません。行列に複数のチャンネルがある場合は,すべてのチャンネルのドットプロダクトが合計されます.
m | もう1つのドットプロダクトのオペランド。 |
size_t cv::Mat::elemSize | ( | ) | const |
行列の要素サイズをバイト単位で返します。
このメソッドは,行列の要素サイズをバイト単位で返します。例えば,行列の種類が CV_16SC3 の場合,このメソッドは 3*sizeof(short) または 6 を返します.
size_t cv::Mat::elemSize1 | ( | ) | const |
各行列要素のチャンネルのサイズをバイト単位で返します。
このメソッドは,行列要素のチャンネルのサイズをバイト単位で返します(つまり,チャンネル数は無視します).例えば,行列の種類が CV_16SC3 の場合,このメソッドは sizeof(short) または 2 を返します.
bool cv::Mat::empty | ( | ) | const |
配列の要素が存在しない場合は,真を返します.
このメソッドは,以下の場合に真を返しますMat::total()が 0 の場合,あるいはMat::dataが NULL の場合は真を返します.の場合は真を返します.pop_back()およびresize()メソッドM.total() == 0
は,次のことを意味しません。M.data == NULL
.
MatIterator_< _Tp > cv::Mat::end | ( | ) |
行列のイテレータを返し,それを最後の行列要素の後に設定します.
これらのメソッドは,行列の最後の要素の後の点に設定された,読み込み専用または読み書き可能なイテレータを返します。
|
static |
指定されたサイズと型の単位行列を返します。
このメソッドは,以下と同様に Matlab スタイルの単位行列イニシャライザを返します.Mat::zeros. と同様にMat::onesと同様に,スケール操作を利用して,スケーリングされた単位行列を効率的に作成することができます.
rows | 行数。 |
cols | 列の数 |
type | 作成された行列の種類。 |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
size | 行列のサイズを Size(cols, rows) に変更します. |
type | 作成された行列の種類。 |
void cv::Mat::forEach | ( | const Functor & | operation | ) |
与えられたファンクタを,すべての行列要素に対して並列に実行します.
引数として渡される演算は,関数ポインタ,関数オブジェクト,ラムダ(C++11)のいずれかでなければいけません.
例 1. 以下のすべての演算は,すべての行列要素の最初のチャンネルを 0xFF にします.
例 2. ピクセルの位置を利用して
void cv::Mat::forEach | ( | const Functor & | operation | ) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
行列を反転させます。
このメソッドは、行列式を使って行列の反転を行います。つまり,一時的な行列反転オブジェクトがこのメソッドから返され,より複雑な行列式の一部としてさらに使用したり,行列に代入したりすることができます.
method | 行列逆転メソッド.以下のいずれかですcv::DecompTypes |
bool cv::Mat::isContinuous | ( | ) | const |
行列が連続しているかどうかを報告します。
このメソッドは,行列の要素が各行の終わりに隙間なく連続して格納されている場合は真を返します。そうでない場合は false を返します。明らかに,1x1 または 1xN の行列は常に連続しています。で作成された行列は,常に連続的です。Mat::createで作成された行列は,常に連続しています。しかし,行列の一部をMat::col,Mat::diagを使って行列の一部を抽出したり,外部から割り当てられたデータのために行列のヘッダを作成したりすると,そのような行列はもはやこの特性を持たないかもしれません。
連続性フラグは,フィールドMat::flagsフィールドのビットとして格納されており,行列ヘッダを構築する際に自動的に計算されます。したがって,理論的には次のようにしてもよいのですが,連続性チェックは非常に高速な処理です。
この方法は,OpenCVのかなり多くの関数で利用されています.ポイントは,要素単位の演算(算術演算や論理演算,数学関数,アルファブレンディング,色空間変換など)は,画像の形状に依存しないということです.したがって,入出力配列がすべて連続している場合,関数はそれらを非常に長い1列のベクトルとして処理することができます.下の例は,アルファブレンディング関数の実装方法を示しています.
この方法は,非常に単純ですが,特に画像が小さくて操作が単純な場合,単純な要素操作の性能を10〜20パーセント向上させることができます.
この関数におけるもう1つの OpenCV のイディオム,すなわち,出力配列に対するMat::createの呼び出しで,すでに適切なサイズと型を持っている場合を除いて,出力配列を確保します.また,新しく確保された配列は常に連続していますが,出力配列をチェックする必要があります.Mat::createは常に新しい行列を割り当てるわけではありません。
行列のヘッダを親行列の中に配置します。
などを使って行列から部分行列を抽出した後は,結果として得られる部分行列はMat::row,Mat::col,Mat::rowRange,Mat::colRangeなどを使って行列から部分行列を抽出した後,結果として得られる部分行列は,元の大きな行列の一部を指しています.しかし,各部分行列には,元の行列のサイズや,抽出された部分行列の元の行列内での位置を再構築するのに役立つ情報(datastart フィールドと dataend フィールドで表される)が含まれています.メソッド locateROI は,まさにそれを行います.
wholeSize | を含む行列全体のサイズを含むパラメータを出力します.このを部分的に含む行列全体のサイズを含む出力パラメータ. |
ofs | 行列全体の中での,この部分のオフセットを含む出力パラメータ.こののオフセットを含む出力パラメータ. |
MatExpr cv::Mat::mul | ( | InputArray | m, |
double |
scale
=
1 |
||
) | const |
2 つの行列の要素毎の乗算または除算を行います.
このメソッドは,要素毎の配列の乗算をエンコードした一時的なオブジェクトを,オプションのスケールと共に返します.これは,より単純な "\*" 演算子に対応する行列の乗算ではないことに注意してください.
例
m | *this と同じ型,同じサイズの別の配列,または,行列式. |
scale | 任意のスケールファクター. |
|
static |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
ndims | 配列の次元。 |
sz | 配列の形状を指定する整数の配列. |
type | 作成された行列の種類。 |
|
static |
指定されたサイズと型の,すべての 1 の配列を返します.
このメソッドは,以下と同様に Matlab スタイルの 1 の配列イニシャライザを返します.Mat::zeros. このメソッドを使うと,以下のような Matlab のイディオムを利用して,任意の値で配列を初期化できることに注意してください.
その代わり,スケールファクタ(この場合は 3)を記憶しておき,実際に行列のイニシャライザを呼び出す際にそれを利用します.
rows | 行数。 |
cols | 列の数 |
type | 作成された行列の種類。 |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
size | 行列のサイズ指定に代わるもの Size(cols, rows) . |
type | 作成された行列の種類。 |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
ranges | 配列の各次元で選択された範囲の配列. |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
roi | 矩形として指定された抽出部分行列。 |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
ranges | 配列の各次元で選択された範囲の配列. |
矩形の部分行列を抽出します。
これらの演算子は, *this の指定された部分配列に対して新しいヘッダを作成します.の最も一般的な形式です。Mat::row,Mat::col,Mat::rowRangeを満たす。Mat::colRange. 例えば,以下のようになります。A(Range(0, 10), Range::all())
は次のものと同じです.A.rowRange(0, 10)
. 上記のすべてと同様に,これらの演算子は O(1) の演算であり,つまり,行列データはコピーされません.
rowRange | 抽出された部分行列の開始行と終了行。上部境界は含まれません。すべての行を選択するには,Range::all() を利用してください。 |
colRange | 抽出された部分行列の始点と終点の列。上側の境界は含まれません。すべての列を選択するには,Range::all()を利用してください。 |
代入演算子
以上が利用可能な代入演算子です。どれも大きく異なるので,演算子のパラメータの説明を必ず読んでください。
m | 代入された,右手側の行列.行列の代入は,O(1)の操作です.つまり、データはコピーされませんが、データは共有され、参照カウンタがあれば、それがインクリメントされます。新しいデータを割り当てる前に,古いデータの参照が解除されます.Mat::release. |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
expr | 割り当てられた行列式オブジェクト。第 1 の形式の代入操作とは逆に、第 2 の形式では、行列式の結果に適したサイズとタイプであれば、既に割り当てられている行列を再利用することができます。これは、行列式が展開される実関数によって自動的に処理されます。例えば,C=A+B は add(A, B, C) に展開され,add は自動的に C の再割り当てを行います. |
配列の要素の全部または一部を,指定された値に設定します.
s | 割り当てられたスカラは,実際の配列型に変換されます. |
void cv::Mat::pop_back | ( | size_t |
nelems
=
1
|
) |
行列の最下部から要素を削除します.
このメソッドは,行列の底から 1 つまたは複数の行を削除します.
nelems | 削除された行の数。これが行の総数よりも大きい場合は,例外が発生します. |
uchar * cv::Mat::ptr | ( | const int * | idx | ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
_Tp * cv::Mat::ptr | ( | const int * | idx | ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
const uchar * cv::Mat::ptr | ( | const int * | idx | ) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
const _Tp * cv::Mat::ptr | ( | const int * | idx | ) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
uchar * cv::Mat::ptr | ( | const Vec< int, n > & | idx | ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
_Tp * cv::Mat::ptr | ( | const Vec< int, n > & | idx | ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
const uchar * cv::Mat::ptr | ( | const Vec< int, n > & | idx | ) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
const _Tp * cv::Mat::ptr | ( | const Vec< int, n > & | idx | ) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
uchar * cv::Mat::ptr | ( | int | i0, |
int | i1, | ||
int | i2 | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
_Tp * cv::Mat::ptr | ( | int | i0, |
int | i1, | ||
int | i2 | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
const uchar * cv::Mat::ptr | ( | int | i0, |
int | i1, | ||
int | i2 | ||
) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
const _Tp * cv::Mat::ptr | ( | int | i0, |
int | i1, | ||
int | i2 | ||
) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
uchar * cv::Mat::ptr | ( | int |
i0
=
0
|
) |
指定された行列の行へのポインタを返します。
このメソッドが返すのはuchar*
または,指定された行列の行への型付きポインタ。これらのメソッドの使い方については,以下のサンプルを参照してください.Mat::isContinuousのサンプルを参照してください.
i0 | 0 ベースの行インデックス. |
_Tp * cv::Mat::ptr | ( | int |
i0
=
0
|
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
const uchar * cv::Mat::ptr | ( | int |
i0
=
0
|
) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
const _Tp * cv::Mat::ptr | ( | int |
i0
=
0
|
) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
uchar * cv::Mat::ptr | ( | int | row, |
int | col | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
row | 0次元のインデックス |
col | 1次元目のインデックス |
_Tp * cv::Mat::ptr | ( | int | row, |
int | col | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
row | 0次元のインデックス |
col | 1次元目のインデックス |
const uchar * cv::Mat::ptr | ( | int | row, |
int | col | ||
) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
row | 0次元のインデックス |
col | 1次元目のインデックス |
const _Tp * cv::Mat::ptr | ( | int | row, |
int | col | ||
) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
row | 0次元のインデックス |
col | 1次元目のインデックス |
void cv::Mat::push_back | ( | const _Tp & | elem | ) |
行列の最下部に要素を追加します。
このメソッドは,1 つ以上の要素を行列の底に追加します.これらのメソッドは、STL vector クラスの対応するメソッドをエミュレートしています。elem がMatの場合,その型と列数はコンテナ行列と同じでなければなりません。
elem | 要素を追加。 |
void cv::Mat::push_back | ( | const Mat & | m | ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
m | 行が追加されました。 |
void cv::Mat::push_back | ( | const Mat_< _Tp > & | elem | ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
elem | 要素を追加。 |
void cv::Mat::push_back | ( | const std::vector< _Tp > & | elem | ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
elem | 要素を追加。 |
void cv::Mat::release | ( | ) |
必要に応じて,参照カウンタをデクリメントし,行列を解放します。
このメソッドは,行列データに関連付けられた参照カウンタをデクリメントします。参照カウンタが 0 になると,行列データは解放され,データと参照カウンタのポインタが NULL に設定されます.行列のヘッダが外部のデータセットを指している場合(参考Mat::Matを参照),参照カウンタは NULL で,このメソッドはこの場合には何の効果もありません。
このメソッドを手動で呼び出して,行列データの解放を強制することもできます.しかし,このメソッドはデストラクタや,データポインタを変更するその他のメソッドで自動的に呼び出されるので,通常は必要ありません.参照カウンタのデクリメントと0のチェックは、それをサポートするプラットフォームではアトミックな操作です。したがって,同じ行列を異なるスレッドで非同期的に操作しても安全です.
void cv::Mat::reserve | ( | size_t | sz | ) |
特定の行数のためにスペースを確保します。
このメソッドは sz 行分のスペースを確保します。行列が既に sz 行分のスペースを持っている場合は何も起こりません。行列が再割り当てされた場合は、最初のMat::rows行が保存されます。このメソッドは、STL vector クラスの対応するメソッドをエミュレートします。
sz | 行数。 |
void cv::Mat::reserveBuffer | ( | size_t | sz | ) |
特定のバイト数の領域を確保します。
このメソッドは sz バイト分の領域を確保します。行列に既に sz バイト分のスペースがある場合は何も起こりません。行列を再配置する必要がある場合は、以前の内容が失われる可能性があります。
sz | バイト数。 |
Mat cv::Mat::reshape | ( | int | cn, |
const std::vector< int > & | newshape | ||
) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
Mat cv::Mat::reshape | ( | int | cn, |
int | newndims, | ||
const int * | newsz | ||
) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
Mat cv::Mat::reshape | ( | int | cn, |
int |
rows
=
0 |
||
) | const |
データをコピーすることなく 2D 行列の形状やチャンネル数を変更します。
このメソッドは, *this 要素のための新しい行列ヘッダを作成します。新しい行列は,異なるサイズや異なるチャンネル数を持つ可能性があります.以下の条件を満たせば,どのような組み合わせも可能です
例えば、STLベクトルとして格納されている3Dポイントのセットがあり、そのポイントを3xNの行列として表現したい場合は、以下のようにします。
cn | 新しいチャンネル数。パラメータが0の場合は、チャンネル数はそのままです。 |
rows | 新しい行の数。パラメータが0の場合、行数は同じままです。 |
void cv::Mat::resize | ( | size_t | sz | ) |
マトリックスの行数を変更します。
このメソッドは、マトリックスの行数を変更します。行列が再割り当てされた場合でも,最初の min(Mat::rows, sz) 行は保存されます.これらのメソッドは,STL vector クラスの対応するメソッドを模したものです.
sz | 新しい行数. |
void cv::Mat::resize | ( | size_t | sz, |
const Scalar & | s | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
sz | 新しい行数. |
s | 新しく追加された要素に割り当てられる値. |
Mat cv::Mat::row | ( | int | y | ) | const |
指定された行列の行に対する行列ヘッダを作成します.
このメソッドは,指定された行列の行に対して新しいヘッダを作成し,それを返します。これは,行列のサイズに関わらず,O(1) の処理です.新しい行列の基礎データは,元の行列と共有されます.ここでは,LUをはじめとする多くのアルゴリズムで使用される,古典的な基本行列処理演算の1つであるaxpyの例を示します.
y | 0 ベースの行インデックス. |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
r | Range開始インデックスと終了インデックスの両方を含む構造体. |
Mat cv::Mat::rowRange | ( | int | startrow, |
int | endrow | ||
) | const |
Mat & cv::Mat::setTo | ( | InputArray | value, |
InputArray |
mask
=
noArray() |
||
) |
配列の要素の全部または一部を,指定された値に設定します.
演算子の発展型です.Mat::operator=(const Scalar& s)演算子と同じサイズのオペレーションマスクです。
value | 割り当てられたスカラは,実際の配列型に変換されます. |
mask | thisと同じサイズの演算マスク.非0の要素は,どの行列要素をコピーする必要があるかを示します.このマスクは,CV_8U型でなければならず,1つまたは複数のチャンネルを持ちます. |
size_t cv::Mat::step1 | ( | int |
i
=
0
|
) | const |
正規化されたステップを返します.
このメソッドは,行列のステップを次の式で割った値を返しますMat::elemSize1(). これは,任意の行列要素に素早くアクセスするのに役立ちます.
MatExpr cv::Mat::t | ( | ) | const |
size_t cv::Mat::total | ( | ) | const |
配列の総要素数を返します。
このメソッドは,配列の要素数(配列が画像を表す場合はピクセル数)を返します。
size_t cv::Mat::total | ( | int | startDim, |
int |
endDim
=
INT_MAX |
||
) | const |
配列の総要素数を返します。
このメソッドは,startDim <= dim < endDim である特定のサブアレースライス内の要素数を返します.
int cv::Mat::type | ( | ) | const |
行列要素の型を返します。
このメソッドは,行列要素の型を返します。これは,型システムと互換性のある識別子です.CvMat型システムと互換性のある識別子で,例えば CV_16SC3 は 16 ビット符号付き 3 チャンネル配列,などです.
|
static |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
ndims | 配列の次元。 |
sz | 配列の形状を指定する整数の配列. |
type | 作成された行列の種類。 |
|
static |
指定されたサイズと型の 0 個の配列を返します.
このメソッドは,Matlab 形式のゼロ配列イニシャライザを返します.これは,関数のパラメータや行列式の一部として,あるいは行列のイニシャライザとして,定数配列を素早く形成するために利用できます.
上の例では,A が 3x3 の浮動小数点型行列ではない場合にのみ,新しい行列が確保されます.それ以外の場合は,既存の行列 A にゼロが詰められます.
rows | 行数。 |
cols | 列の数 |
type | 作成された行列の種類。 |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
size | 行列のサイズ指定に代わるもの Size(cols, rows) . |
type | 作成された行列の種類。 |
int cv::Mat::flags |
いくつかのビットフィールドを含みます。