OpenCV 4.5.3(日本語機械翻訳)
|
This is the proxy class for passing read-only input arrays into OpenCV functions. [詳解]
#include <mat.hpp>
cv::_OutputArrayに継承されています。
公開型 |
|
enum |
KindFlag
{
KIND_SHIFT = 16 , FIXED_TYPE = 0x8000 << KIND_SHIFT , FIXED_SIZE = 0x4000 << KIND_SHIFT , KIND_MASK = 31 << KIND_SHIFT , NONE = 0 << KIND_SHIFT , MAT = 1 << KIND_SHIFT , MATX = 2 << KIND_SHIFT , STD_VECTOR = 3 << KIND_SHIFT , STD_VECTOR_VECTOR = 4 << KIND_SHIFT , STD_VECTOR_MAT = 5 << KIND_SHIFT , EXPR = 6 << KIND_SHIFT , OPENGL_BUFFER = 7 << KIND_SHIFT , CUDA_HOST_MEM = 8 << KIND_SHIFT , CUDA_GPU_MAT = 9 << KIND_SHIFT , UMAT =10 << KIND_SHIFT , STD_VECTOR_UMAT =11 << KIND_SHIFT , STD_BOOL_VECTOR =12 << KIND_SHIFT , STD_VECTOR_CUDA_GPU_MAT = 13 << KIND_SHIFT , STD_ARRAY =14 << KIND_SHIFT , STD_ARRAY_MAT =15 << KIND_SHIFT } |
公開メンバ関数 |
|
_InputArray (int _flags, void *_obj) | |
_InputArray (const Mat &m) | |
_InputArray (const MatExpr &expr) | |
_InputArray (const std::vector< Mat > &vec) | |
template<typename _Tp > | |
_InputArray (const Mat_< _Tp > &m) | |
template<typename _Tp > | |
_InputArray (const std::vector< _Tp > &vec) | |
_InputArray (const std::vector< bool > &vec) | |
template<typename _Tp > | |
_InputArray (const std::vector< std::vector< _Tp > > &vec) | |
_InputArray (const std::vector< std::vector< bool > > &)=delete | |
template<typename _Tp > | |
_InputArray (const std::vector< Mat_< _Tp > > &vec) | |
template<typename _Tp > | |
_InputArray (const _Tp *vec, int n) | |
template<typename _Tp , int m, int n> | |
_InputArray (const Matx< _Tp, m, n > &matx) | |
_InputArray (const double &val) | |
_InputArray (const cuda::GpuMat &d_mat) | |
_InputArray (const std::vector< cuda::GpuMat > &d_mat_array) | |
_InputArray (const ogl::Buffer &buf) | |
_InputArray (const cuda::HostMem &cuda_mem) | |
template<typename _Tp > | |
_InputArray (const cudev::GpuMat_< _Tp > &m) | |
_InputArray (const UMat &um) | |
_InputArray (const std::vector< UMat > &umv) | |
template<typename _Tp , std::size_t _Nm> | |
_InputArray (const std::array< _Tp, _Nm > &arr) | |
template<std::size_t _Nm> | |
_InputArray (const std::array< Mat, _Nm > &arr) | |
Mat | getMat (int idx=-1) const |
Mat | getMat_ (int idx=-1) const |
UMat | getUMat (int idx=-1) const |
void | getMatVector (std::vector< Mat > &mv) const |
void | getUMatVector (std::vector< UMat > &umv) const |
void | getGpuMatVector (std::vector< cuda::GpuMat > &gpumv) const |
cuda::GpuMat | getGpuMat () const |
ogl::Buffer | getOGlBuffer () const |
int | getFlags () const |
void * | getObj () const |
Size | getSz () const |
_InputArray::KindFlag | kind () const |
int | dims (int i=-1) const |
int | cols (int i=-1) const |
int | rows (int i=-1) const |
Size | size (int i=-1) const |
int | sizend (int *sz, int i=-1) const |
bool | sameSize (const _InputArray &arr) const |
size_t | total (int i=-1) const |
int | type (int i=-1) const |
int | depth (int i=-1) const |
int | channels (int i=-1) const |
bool | isContinuous (int i=-1) const |
bool | isSubmatrix (int i=-1) const |
bool | empty () const |
void | copyTo (const _OutputArray &arr) const |
void | copyTo (const _OutputArray &arr, const _InputArray &mask) const |
size_t | offset (int i=-1) const |
size_t | step (int i=-1) const |
bool | isMat () const |
bool | isUMat () const |
bool | isMatVector () const |
bool | isUMatVector () const |
bool | isMatx () const |
bool | isVector () const |
bool | isGpuMat () const |
bool | isGpuMatVector () const |
静的公開メンバ関数 |
|
template<typename _Tp > | |
static _InputArray | rawIn (const std::vector< _Tp > &vec) |
template<typename _Tp , std::size_t _Nm> | |
static _InputArray | rawIn (const std::array< _Tp, _Nm > &arr) |
限定公開メンバ関数 |
|
void | init (int _flags, const void *_obj) |
void | init (int _flags, const void *_obj, Size _sz) |
限定公開変数類 |
|
int | flags |
void * | obj |
Size | sz |
読み取り専用の入力配列をOpenCVの関数に渡すための,プロキシクラスです.
次のように定義されています.
ここで_InputArrayは,次のように構成されるクラスです.
Mat
,
Mat_<T>
,
Matx<T, m, n>
,std::vector<T>
,std::vector<std::vector<T> >
,std::vector<Mat>
,std::vector<Mat_<T> >
,
UMat
,std::vector<UMat>
またはdouble
. また,行列式から作成することもできます.
これは,ほとんどが実装レベルのクラスであり,そのインタフェースは将来のバージョンで変更される可能性があるので,ここでは詳細を説明しません.しかし,いくつかの重要な点については覚えておく必要があります.
Mat
,
Matx
,vector<T>
などを渡すことができます。(を渡すことができることを意味します(完全なリストは上記を参照してください)。vector<>
などを区別するために使用できますが,通常は必要ありません.ここでは、InputArray を受け取る関数をどのように使用するかを説明します。
すなわち、点を含む STL ベクトルを形成し、インラインで次のように作成された 2x3 行列を用いて、ベクトルにインプレースでアフィン変換を施す。
Matx<float, 2, 3>
インスタンスを作成します。
このような関数がどのように実装されるかを以下に示します(簡単にするために、内部のアサーション・ステートメントに従って、非常に特殊なケースを実装しています)。
関連するタイプとしてInputArrayOfArraysがあり、現在はInputArrayの同義語として定義されています。
これは、ベクターのベクターまたは行列のベクターである関数の引数を表します。Python/Javaなどのラッパーを適切に生成するためには、別の同義語が必要です。関数の実装レベルでは、これらの使用方法は似ていますが、_InputArray::getMat(idx)は外側のベクトルの idx 番目のコンポーネントのヘッダを取得するために使用し、_InputArray::size().area() は外側のベクトルのコンポーネント(ベクトル/行列)の数を求めるために使用します。
一般的に、型のサポートは次のものに限られます。cv::Mat型に限定されています。それ以外の型は禁止されています。しかし、場合によっては、一般的でないカスタムの型の受け渡しをサポートする必要があります。Matの配列など、一般的ではないカスタム型の受け渡しをサポートする必要がある場合もあります。cv::KeyPoint,cv::DMatchなどです。このデータは,画像データとして解釈されることは意図しておらず,通常のcv::Mat. このようなカスタムタイプを渡すにはrawIn()/rawOut()/rawInOut()ラッパーを利用します.カスタムタイプは,Mat と互換性のある値としてラップされますCV_8UC<N>
値( N = sizeof(T), N <= CV_CN_MAX )として扱われます.