OpenCV453
クラス | 公開型 | 公開メンバ関数 | 公開変数類 | 全メンバ一覧
cv::SparseMat クラス

The class SparseMat represents multi-dimensional sparse numerical arrays. [詳解]

#include <mat.hpp>

cv::SparseMat_< _Tp >に継承されています。

クラス

struct  Hdr
 the sparse matrix header [詳解]
 
struct  Node
 sparse matrix node - element of a hash table [詳解]
 

公開型

enum  { MAGIC_VAL =0x42FD0000 , MAX_DIM =32 , HASH_SCALE =0x5bd1e995 , HASH_BIT =0x80000000 }
 
typedef SparseMatIterator iterator
 
typedef SparseMatConstIterator const_iterator
 

公開メンバ関数

 SparseMat ()
 Various SparseMat constructors.
 
 SparseMat (int dims, const int *_sizes, int _type)
 
 SparseMat (const SparseMat &m)
 
 SparseMat (const Mat &m)
 
 ~SparseMat ()
 the destructor
 
SparseMatoperator= (const SparseMat &m)
 assignment operator. This is O(1) operation, i.e. no data is copied
 
SparseMatoperator= (const Mat &m)
 equivalent to the corresponding constructor
 
SparseMat clone () const CV_NODISCARD
 creates full copy of the matrix
 
void copyTo (SparseMat &m) const
 copies all the data to the destination matrix. All the previous content of m is erased
 
void copyTo (Mat &m) const
 converts sparse matrix to dense matrix.
 
void convertTo (SparseMat &m, int rtype, double alpha=1) const
 multiplies all the matrix elements by the specified scale factor alpha and converts the results to the specified data type
 
void convertTo (Mat &m, int rtype, double alpha=1, double beta=0) const
 converts sparse matrix to dense n-dim matrix with optional type conversion and scaling. [詳解]
 
void assignTo (SparseMat &m, int type=-1) const
 
void create (int dims, const int *_sizes, int _type)
 reallocates sparse matrix. [詳解]
 
void clear ()
 sets all the sparse matrix elements to 0, which means clearing the hash table.
 
void addref ()
 manually increments the reference counter to the header.
 
void release ()
 
size_t elemSize () const
 converts sparse matrix to the old-style representation; all the elements are copied. [詳解]
 
size_t elemSize1 () const
 returns elemSize()/channels()
 
int type () const
 returns type of sparse matrix elements
 
int depth () const
 returns the depth of sparse matrix elements
 
int channels () const
 returns the number of channels
 
const int * size () const
 returns the array of sizes, or NULL if the matrix is not allocated
 
int size (int i) const
 returns the size of i-th matrix dimension (or 0)
 
int dims () const
 returns the matrix dimensionality
 
size_t nzcount () const
 returns the number of non-zero elements (=the number of hash table nodes)
 
size_t hash (int i0) const
 computes the element hash value (1D case)
 
size_t hash (int i0, int i1) const
 computes the element hash value (2D case)
 
size_t hash (int i0, int i1, int i2) const
 computes the element hash value (3D case)
 
size_t hash (const int *idx) const
 computes the element hash value (nD case)
 
void erase (int i0, int i1, size_t *hashval=0)
 erases the specified element (2D case)
 
void erase (int i0, int i1, int i2, size_t *hashval=0)
 erases the specified element (3D case)
 
void erase (const int *idx, size_t *hashval=0)
 erases the specified element (nD case)
 
SparseMatIterator end ()
 returns the sparse matrix iterator at the matrix end [詳解]
 
SparseMatConstIterator end () const
 returns the read-only sparse matrix iterator at the matrix end
 
template<typename _Tp >
SparseMatIterator_< _Tp > end ()
 returns the typed sparse matrix iterator at the matrix end
 
template<typename _Tp >
SparseMatConstIterator_< _Tp > end () const
 returns the typed read-only sparse matrix iterator at the matrix end
 
template<typename _Tp >
_Tp & value (Node *n)
 returns the value stored in the sparse martix node
 
template<typename _Tp >
const _Tp & value (const Node *n) const
 returns the value stored in the sparse martix node
 
Nodenode (size_t nidx)
 
const Nodenode (size_t nidx) const
 
uchar * newNode (const int *idx, size_t hashval)
 
void removeNode (size_t hidx, size_t nidx, size_t previdx)
 
void resizeHashTab (size_t newsize)
 
uchar * ptr (int i0, bool createMissing, size_t *hashval=0)
 returns pointer to the specified element (1D case) [詳解]
 
uchar * ptr (int i0, int i1, bool createMissing, size_t *hashval=0)
 returns pointer to the specified element (2D case)
 
uchar * ptr (int i0, int i1, int i2, bool createMissing, size_t *hashval=0)
 returns pointer to the specified element (3D case)
 
uchar * ptr (const int *idx, bool createMissing, size_t *hashval=0)
 returns pointer to the specified element (nD case)
 
template<typename _Tp >
_Tp & ref (int i0, size_t *hashval=0)
 returns reference to the specified element (1D case) [詳解]
 
template<typename _Tp >
_Tp & ref (int i0, int i1, size_t *hashval=0)
 returns reference to the specified element (2D case)
 
template<typename _Tp >
_Tp & ref (int i0, int i1, int i2, size_t *hashval=0)
 returns reference to the specified element (3D case)
 
template<typename _Tp >
_Tp & ref (const int *idx, size_t *hashval=0)
 returns reference to the specified element (nD case)
 
template<typename _Tp >
_Tp value (int i0, size_t *hashval=0) const
 returns value of the specified element (1D case) [詳解]
 
template<typename _Tp >
_Tp value (int i0, int i1, size_t *hashval=0) const
 returns value of the specified element (2D case)
 
template<typename _Tp >
_Tp value (int i0, int i1, int i2, size_t *hashval=0) const
 returns value of the specified element (3D case)
 
template<typename _Tp >
_Tp value (const int *idx, size_t *hashval=0) const
 returns value of the specified element (nD case)
 
template<typename _Tp >
const _Tp * find (int i0, size_t *hashval=0) const
 returns pointer to the specified element (1D case) [詳解]
 
template<typename _Tp >
const _Tp * find (int i0, int i1, size_t *hashval=0) const
 returns pointer to the specified element (2D case)
 
template<typename _Tp >
const _Tp * find (int i0, int i1, int i2, size_t *hashval=0) const
 returns pointer to the specified element (3D case)
 
template<typename _Tp >
const _Tp * find (const int *idx, size_t *hashval=0) const
 returns pointer to the specified element (nD case)
 
SparseMatIterator begin ()
 returns the sparse matrix iterator at the matrix beginning [詳解]
 
template<typename _Tp >
SparseMatIterator_< _Tp > begin ()
 returns the sparse matrix iterator at the matrix beginning
 
SparseMatConstIterator begin () const
 returns the read-only sparse matrix iterator at the matrix beginning
 
template<typename _Tp >
SparseMatConstIterator_< _Tp > begin () const
 returns the read-only sparse matrix iterator at the matrix beginning
 

公開変数類

int flags
 
Hdrhdr
 

詳解

The class SparseMat represents multi-dimensional sparse numerical arrays.

Such a sparse array can store elements of any type that Mat can store. Sparse means that only non-zero elements are stored (though, as a result of operations on a sparse matrix, some of its stored elements can actually become 0. It is up to you to detect such elements and delete them using SparseMat::erase ). The non-zero elements are stored in a hash table that grows when it is filled so that the search time is O(1) in average (regardless of whether element is there or not). Elements can be accessed using the following methods:

構築子と解体子

◆ SparseMat() [1/3]

cv::SparseMat::SparseMat ( int  dims,
const int *  _sizes,
int  _type 
)

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

引数
dimsArray dimensionality.
_sizesSparce matrix size on all dementions.
_typeSparse matrix data type.

◆ SparseMat() [2/3]

cv::SparseMat::SparseMat ( const SparseMat m)

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

引数
mSource matrix for copy constructor. If m is dense matrix (ocvMat) then it will be converted to sparse representation.

◆ SparseMat() [3/3]

cv::SparseMat::SparseMat ( const Mat m)
explicit

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

引数
mSource matrix for copy constructor. If m is dense matrix (ocvMat) then it will be converted to sparse representation.

関数詳解

◆ begin()

SparseMatIterator cv::SparseMat::begin ( )

returns the sparse matrix iterator at the matrix beginning

return the sparse matrix iterator pointing to the first sparse matrix element

◆ convertTo()

void cv::SparseMat::convertTo ( Mat m,
int  rtype,
double  alpha = 1,
double  beta = 0 
) const

converts sparse matrix to dense n-dim matrix with optional type conversion and scaling.

引数
[out]m- output matrix; if it does not have a proper size or type before the operation, it is reallocated
[in]rtype- desired output matrix type or, rather, the depth since the number of channels are the same as the input has; if rtype is negative, the output matrix will have the same type as the input.
[in]alpha- optional scale factor
[in]beta- optional delta added to the scaled values

◆ create()

void cv::SparseMat::create ( int  dims,
const int *  _sizes,
int  _type 
)

reallocates sparse matrix.

If the matrix already had the proper size and type, it is simply cleared with clear(), otherwise, the old matrix is released (using release()) and the new one is allocated.

◆ elemSize()

size_t cv::SparseMat::elemSize ( ) const

converts sparse matrix to the old-style representation; all the elements are copied.

returns the size of each element in bytes (not including the overhead - the space occupied by SparseMat::Node elements)

◆ end()

SparseMatIterator cv::SparseMat::end ( )

returns the sparse matrix iterator at the matrix end

return the sparse matrix iterator pointing to the element following the last sparse matrix element

◆ find()

template<typename _Tp >
const _Tp * cv::SparseMat::find ( int  i0,
size_t *  hashval = 0 
) const

returns pointer to the specified element (1D case)

Return pointer to the specified sparse matrix element if it exists

find<_Tp>(i0,...[,hashval]) is equivalent to (_const Tp*)ptr(i0,...false[,hashval]).

If the specified element does not exist, the methods return NULL.

◆ ptr()

uchar * cv::SparseMat::ptr ( int  i0,
bool  createMissing,
size_t *  hashval = 0 
)

returns pointer to the specified element (1D case)

specialized variants for 1D, 2D, 3D cases and the generic_type one for n-D case. return pointer to the matrix element.

  • if the element is there (it's non-zero), the pointer to it is returned
  • if it's not there and createMissing=false, NULL pointer is returned
  • if it's not there and createMissing=true, then the new element is created and initialized with 0. Pointer to it is returned
  • if the optional hashval pointer is not NULL, the element hash value is not computed, but *hashval is taken instead.

◆ ref()

template<typename _Tp >
_Tp & cv::SparseMat::ref ( int  i0,
size_t *  hashval = 0 
)

returns reference to the specified element (1D case)

return read-write reference to the specified sparse matrix element.

ref<_Tp>(i0,...[,hashval]) is equivalent to *(_Tp*)ptr(i0,...,true[,hashval]). The methods always return a valid reference. If the element did not exist, it is created and initialized with 0.

◆ value()

template<typename _Tp >
_Tp cv::SparseMat::value ( int  i0,
size_t *  hashval = 0 
) const

returns value of the specified element (1D case)

return value of the specified sparse matrix element.

value<_Tp>(i0,...[,hashval]) is equivalent to

{ const _Tp* p = find<_Tp>(i0,...[,hashval]); return p ? *p : _Tp(); }

That is, if the element did not exist, the methods return 0.


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