class cv::UMat

Overview

Todo document More…

#include <mat.hpp>

class UMat
{
public:
    // enums

    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,
    };

    // fields

    MatAllocator* allocator;
    int cols;
    int dims;
    int flags;
    size_t offset;
    int rows;
    MatSize size;
    MatStep step;
    UMatData* u;
    UMatUsageFlags usageFlags;

    // construction

    UMat(UMatUsageFlags usageFlags = USAGE_DEFAULT);

    UMat(
        int rows,
        int cols,
        int type,
        UMatUsageFlags usageFlags = USAGE_DEFAULT
        );

    UMat(
        Size size,
        int type,
        UMatUsageFlags usageFlags = USAGE_DEFAULT
        );

    UMat(
        int rows,
        int cols,
        int type,
        const Scalar& s,
        UMatUsageFlags usageFlags = USAGE_DEFAULT
        );

    UMat(
        Size size,
        int type,
        const Scalar& s,
        UMatUsageFlags usageFlags = USAGE_DEFAULT
        );

    UMat(
        int ndims,
        const int* sizes,
        int type,
        UMatUsageFlags usageFlags = USAGE_DEFAULT
        );

    UMat(
        int ndims,
        const int* sizes,
        int type,
        const Scalar& s,
        UMatUsageFlags usageFlags = USAGE_DEFAULT
        );

    UMat(const UMat& m);

    UMat(
        const UMat& m,
        const Range& rowRange,
        const Range& colRange = Range::all()
        );

    UMat(
        const UMat& m,
        const Rect& roi
        );

    UMat(
        const UMat& m,
        const Range* ranges
        );

    UMat(
        const UMat& m,
        const std::vector<Range>& ranges
        );

    template <typename _Tp>
    UMat(
        const std::vector<_Tp>& vec,
        bool copyData = false
        );

    template <
        typename _Tp,
        int n
        >
    UMat(
        const Vec<_Tp, n>& vec,
        bool copyData = true
        );

    template <
        typename _Tp,
        int m,
        int n
        >
    UMat(
        const Matx<_Tp, m, n>& mtx,
        bool copyData = true
        );

    template <typename _Tp>
    UMat(
        const Point_<_Tp>& pt,
        bool copyData = true
        );

    template <typename _Tp>
    UMat(
        const Point3_<_Tp>& pt,
        bool copyData = true
        );

    template <typename _Tp>
    UMat(const MatCommaInitializer_<_Tp>& commaInitializer);

    // methods

    void
    addref();

    UMat&
    adjustROI(
        int dtop,
        int dbottom,
        int dleft,
        int dright
        );

    void
    assignTo(
        UMat& m,
        int type = -1
        ) const;

    int
    channels() const;

    int
    checkVector(
        int elemChannels,
        int depth = -1,
        bool requireContinuous = true
        ) const;

    UMat
    clone() const;

    UMat
    col(int x) const;

    UMat
    colRange(
        int startcol,
        int endcol
        ) const;

    UMat
    colRange(const Range& r) const;

    void
    convertTo(
        OutputArray m,
        int rtype,
        double alpha = 1,
        double beta = 0
        ) const;

    void
    copySize(const UMat& m);

    void
    copyTo(OutputArray m) const;

    void
    copyTo(
        OutputArray m,
        InputArray mask
        ) const;

    void
    create(
        int rows,
        int cols,
        int type,
        UMatUsageFlags usageFlags = USAGE_DEFAULT
        );

    void
    create(
        Size size,
        int type,
        UMatUsageFlags usageFlags = USAGE_DEFAULT
        );

    void
    create(
        int ndims,
        const int* sizes,
        int type,
        UMatUsageFlags usageFlags = USAGE_DEFAULT
        );

    void
    create(
        const std::vector<int>& sizes,
        int type,
        UMatUsageFlags usageFlags = USAGE_DEFAULT
        );

    void
    deallocate();

    int
    depth() const;

    UMat
    diag(int d = 0) const;

    double
    dot(InputArray m) const;

    size_t
    elemSize() const;

    size_t
    elemSize1() const;

    bool
    empty() const;

    Mat
    getMat(int flags) const;

    void*
    handle(int accessFlags) const;

    UMat
    inv(int method = DECOMP_LU) const;

    bool
    isContinuous() const;

    bool
    isSubmatrix() const;

    void
    locateROI(
        Size& wholeSize,
        Point& ofs
        ) const;

    UMat
    mul(
        InputArray m,
        double scale = 1
        ) const;

    void
    ndoffset(size_t* ofs) const;

    UMat
    operator()(
        Range rowRange,
        Range colRange
        ) const;

    UMat
    operator()(const Rect& roi) const;

    UMat
    operator()(const Range* ranges) const;

    UMat
    operator()(const std::vector<Range>& ranges) const;

    UMat&
    operator=(const UMat& m);

    UMat&
    operator=(const Scalar& s);

    void
    release();

    UMat
    reshape(
        int cn,
        int rows = 0
        ) const;

    UMat
    reshape(
        int cn,
        int newndims,
        const int* newsz
        ) const;

    UMat
    row(int y) const;

    UMat
    rowRange(
        int startrow,
        int endrow
        ) const;

    UMat
    rowRange(const Range& r) const;

    UMat&
    setTo(
        InputArray value,
        InputArray mask = noArray()
        );

    size_t
    step1(int i = 0) const;

    UMat
    t() const;

    size_t
    total() const;

    int
    type() const;

    static
    UMat
    diag(const UMat& d);

    static
    UMat
    eye(
        int rows,
        int cols,
        int type
        );

    static
    UMat
    eye(
        Size size,
        int type
        );

    static
    MatAllocator*
    getStdAllocator();

    static
    UMat
    ones(
        int rows,
        int cols,
        int type
        );

    static
    UMat
    ones(
        Size size,
        int type
        );

    static
    UMat
    ones(
        int ndims,
        const int* sz,
        int type
        );

    static
    UMat
    zeros(
        int rows,
        int cols,
        int type
        );

    static
    UMat
    zeros(
        Size size,
        int type
        );

    static
    UMat
    zeros(
        int ndims,
        const int* sz,
        int type
        );
};

Detailed Documentation

Todo document

Fields

MatAllocator* allocator

custom allocator

int dims

the matrix dimensionality, >= 2

int flags

includes several bit-fields:

  • the magic signature
  • continuity flag
  • depth
  • number of channels
int rows

the number of rows and columns or (-1, -1) when the matrix has more than 2 dimensions

Construction

UMat(UMatUsageFlags usageFlags = USAGE_DEFAULT)

default constructor

UMat(
    int rows,
    int cols,
    int type,
    UMatUsageFlags usageFlags = USAGE_DEFAULT
    )

constructs 2D matrix of the specified size and type

UMat(
    int rows,
    int cols,
    int type,
    const Scalar& s,
    UMatUsageFlags usageFlags = USAGE_DEFAULT
    )

constucts 2D matrix and fills it with the specified value _s.

UMat(
    int ndims,
    const int* sizes,
    int type,
    UMatUsageFlags usageFlags = USAGE_DEFAULT
    )

constructs n-dimensional matrix

UMat(const UMat& m)

copy constructor

UMat(
    const UMat& m,
    const Range& rowRange,
    const Range& colRange = Range::all()
    )

creates a matrix header for a part of the bigger matrix

template <typename _Tp>
UMat(
    const std::vector<_Tp>& vec,
    bool copyData = false
    )

builds matrix from std::vector with or without copying the data

template <
    typename _Tp,
    int n
    >
UMat(
    const Vec<_Tp, n>& vec,
    bool copyData = true
    )

builds matrix from cv::Vec; the data is copied by default

template <
    typename _Tp,
    int m,
    int n
    >
UMat(
    const Matx<_Tp, m, n>& mtx,
    bool copyData = true
    )

builds matrix from cv::Matx; the data is copied by default

template <typename _Tp>
UMat(
    const Point_<_Tp>& pt,
    bool copyData = true
    )

builds matrix from a 2D point

template <typename _Tp>
UMat(
    const Point3_<_Tp>& pt,
    bool copyData = true
    )

builds matrix from a 3D point

template <typename _Tp>
UMat(const MatCommaInitializer_<_Tp>& commaInitializer)

builds matrix from comma initializer

Methods

void
addref()

increases the reference counter; use with care to avoid memleaks

UMat&
adjustROI(
    int dtop,
    int dbottom,
    int dleft,
    int dright
    )

moves/resizes the current matrix ROI inside the parent matrix.

int
channels() const

returns element type, similar to CV_MAT_CN(cvmat->type)

int
checkVector(
    int elemChannels,
    int depth = -1,
    bool requireContinuous = true
    ) const

returns N if the matrix is 1-channel (N x ptdim) or ptdim-channel (1 x N) or (N x 1); negative number otherwise

UMat
clone() const

returns deep copy of the matrix, i.e. the data is copied

UMat
col(int x) const

returns a new matrix header for the specified column

UMat
colRange(
    int startcol,
    int endcol
    ) const

… for the specified column span

void
convertTo(
    OutputArray m,
    int rtype,
    double alpha = 1,
    double beta = 0
    ) const

converts matrix to another datatype with optional scalng. See cvConvertScale.

void
copySize(const UMat& m)

internal use function; properly re-allocates _size, _step arrays

void
copyTo(OutputArray m) const

copies the matrix content to “m”.

void
copyTo(
    OutputArray m,
    InputArray mask
    ) const

copies those matrix elements to “m” that are marked with non-zero mask elements.

void
create(
    int rows,
    int cols,
    int type,
    UMatUsageFlags usageFlags = USAGE_DEFAULT
    )

allocates new matrix data unless the matrix already has specified size and type.

void
deallocate()

deallocates the matrix data

int
depth() const

returns element type, similar to CV_MAT_DEPTH(cvmat->type)

UMat
diag(int d = 0) const

… for the specified diagonal (d=0 - the main diagonal, >0 - a diagonal from the upper half, <0 - a diagonal from the lower half)

double
dot(InputArray m) const

computes dot-product

size_t
elemSize() const

returns element size in bytes,

size_t
elemSize1() const

returns the size of element channel in bytes.

bool
empty() const

returns true if matrix data is NULL

void*
handle(int accessFlags) const

Returns the OpenCL buffer handle on which UMat operates on. The UMat instance should be kept alive during the use of the handle to prevent the buffer to be returned to the OpenCV buffer pool.

UMat
inv(int method = DECOMP_LU) const

matrix inversion by means of matrix expressions

bool
isContinuous() const

returns true iff the matrix data is continuous

bool
isSubmatrix() const

returns true if the matrix is a submatrix of another matrix

void
locateROI(
    Size& wholeSize,
    Point& ofs
    ) const

locates matrix header within a parent matrix. See below

UMat
mul(
    InputArray m,
    double scale = 1
    ) const

per-element matrix multiplication by means of matrix expressions

UMat
operator()(
    Range rowRange,
    Range colRange
    ) const

extracts a rectangular sub-matrix

UMat&
operator=(const UMat& m)

assignment operators

UMat&
operator=(const Scalar& s)

sets every matrix element to s

void
release()

decreases reference counter;

UMat
reshape(
    int cn,
    int rows = 0
    ) const

creates alternative matrix header for the same data, with different

UMat
row(int y) const

returns a new matrix header for the specified row

UMat
rowRange(
    int startrow,
    int endrow
    ) const

… for the specified row span

UMat&
setTo(
    InputArray value,
    InputArray mask = noArray()
    )

sets some of the matrix elements to s, according to the mask

size_t
step1(int i = 0) const

returns step/elemSize1()

UMat
t() const

matrix transposition by means of matrix expressions

size_t
total() const

returns the total number of matrix elements

int
type() const

returns element type, similar to CV_MAT_TYPE(cvmat->type)

static
UMat
diag(const UMat& d)

constructs a square diagonal matrix which main diagonal is vector “d”

static
MatAllocator*
getStdAllocator()

and the standard allocator

static
UMat
zeros(
    int rows,
    int cols,
    int type
    )

Matlab-style matrix initialization.