X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=modules%2Fcore%2Finclude%2Fopencv2%2Fcore%2Fmat.hpp;h=6b8368fd5713b004f5f6f69f794b3ad5b81a6be2;hb=491b84d463f2a25d96c8a2cc85eb6ad6f23e25e6;hp=6409222599318dfe7da7927bb6dbb3bbe2253970;hpb=b6675ee2a85f957e352aef05f31b31b16428387c;p=profile%2Fivi%2Fopencv.git diff --git a/modules/core/include/opencv2/core/mat.hpp b/modules/core/include/opencv2/core/mat.hpp index 6409222..6b8368f 100644 --- a/modules/core/include/opencv2/core/mat.hpp +++ b/modules/core/include/opencv2/core/mat.hpp @@ -86,8 +86,7 @@ public: CUDA_MEM = 8 << KIND_SHIFT, GPU_MAT = 9 << KIND_SHIFT, UMAT =10 << KIND_SHIFT, - STD_VECTOR_UMAT =11 << KIND_SHIFT, - UEXPR =12 << KIND_SHIFT + STD_VECTOR_UMAT =11 << KIND_SHIFT }; _InputArray(); @@ -108,7 +107,6 @@ public: template _InputArray(const cudev::GpuMat_<_Tp>& m); _InputArray(const UMat& um); _InputArray(const std::vector& umv); - _InputArray(const UMatExpr& uexpr); virtual Mat getMat(int idx=-1) const; virtual UMat getUMat(int idx=-1) const; @@ -120,6 +118,8 @@ public: virtual int kind() const; virtual int dims(int i=-1) const; + virtual int cols(int i=-1) const; + virtual int rows(int i=-1) const; virtual Size size(int i=-1) const; virtual int sizend(int* sz, int i=-1) const; virtual bool sameSize(const _InputArray& arr) const; @@ -137,7 +137,7 @@ public: bool isUMat() const; bool isMatVector() const; bool isUMatVector() const; - bool isMatx(); + bool isMatx() const; virtual ~_InputArray(); @@ -268,6 +268,18 @@ CV_EXPORTS InputOutputArray noArray(); /////////////////////////////////// MatAllocator ////////////////////////////////////// +//! Usage flags for allocator +enum UMatUsageFlags +{ + USAGE_DEFAULT = 0, + + // default allocation policy is platform and usage specific + USAGE_ALLOCATE_HOST_MEMORY = 1 << 0, + USAGE_ALLOCATE_DEVICE_MEMORY = 1 << 1, + + __UMAT_USAGE_FLAGS_32BIT = 0x7fffffff // Binary compatibility hint +}; + struct CV_EXPORTS UMatData; /*! @@ -285,8 +297,8 @@ public: // uchar*& datastart, uchar*& data, size_t* step) = 0; //virtual void deallocate(int* refcount, uchar* datastart, uchar* data) = 0; virtual UMatData* allocate(int dims, const int* sizes, int type, - void* data, size_t* step, int flags) const = 0; - virtual bool allocate(UMatData* data, int accessflags) const = 0; + void* data, size_t* step, int flags, UMatUsageFlags usageFlags) const = 0; + virtual bool allocate(UMatData* data, int accessflags, UMatUsageFlags usageFlags) const = 0; virtual void deallocate(UMatData* data) const = 0; virtual void map(UMatData* data, int accessflags) const; virtual void unmap(UMatData* data) const; @@ -371,6 +383,7 @@ struct CV_EXPORTS UMatData int flags; void* handle; void* userdata; + int allocatorFlags_; }; @@ -673,7 +686,7 @@ public: Mat& operator = (const MatExpr& expr); //! retrieve UMat from Mat - UMat getUMat(int accessFlags) const; + UMat getUMat(int accessFlags, UMatUsageFlags usageFlags = USAGE_DEFAULT) const; //! returns a new matrix header for the specified row Mat row(int y) const; @@ -1134,25 +1147,22 @@ typedef Mat_ Mat2d; typedef Mat_ Mat3d; typedef Mat_ Mat4d; - -class CV_EXPORTS UMatExpr; - class CV_EXPORTS UMat { public: //! default constructor - UMat(); + UMat(UMatUsageFlags usageFlags = USAGE_DEFAULT); //! constructs 2D matrix of the specified size and type // (_type is CV_8UC1, CV_64FC3, CV_32SC(12) etc.) - UMat(int rows, int cols, int type); - UMat(Size size, int type); + UMat(int rows, int cols, int type, UMatUsageFlags usageFlags = USAGE_DEFAULT); + UMat(Size size, int type, UMatUsageFlags usageFlags = USAGE_DEFAULT); //! constucts 2D matrix and fills it with the specified value _s. - UMat(int rows, int cols, int type, const Scalar& s); - UMat(Size size, int type, const Scalar& s); + 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); //! constructs n-dimensional matrix - UMat(int ndims, const int* sizes, int type); - UMat(int ndims, const int* sizes, int type, const Scalar& s); + 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); //! copy constructor UMat(const UMat& m); @@ -1178,7 +1188,6 @@ public: ~UMat(); //! assignment operators UMat& operator = (const UMat& m); - UMat& operator = (const UMatExpr& expr); Mat getMat(int flags) const; @@ -1222,32 +1231,30 @@ public: UMat reshape(int cn, int newndims, const int* newsz) const; //! matrix transposition by means of matrix expressions - UMatExpr t() const; + UMat t() const; //! matrix inversion by means of matrix expressions - UMatExpr inv(int method=DECOMP_LU) const; + UMat inv(int method=DECOMP_LU) const; //! per-element matrix multiplication by means of matrix expressions - UMatExpr mul(InputArray m, double scale=1) const; + UMat mul(InputArray m, double scale=1) const; - //! computes cross-product of 2 3D vectors - UMat cross(InputArray m) const; //! computes dot-product double dot(InputArray m) const; //! Matlab-style matrix initialization - static UMatExpr zeros(int rows, int cols, int type); - static UMatExpr zeros(Size size, int type); - static UMatExpr zeros(int ndims, const int* sz, int type); - static UMatExpr ones(int rows, int cols, int type); - static UMatExpr ones(Size size, int type); - static UMatExpr ones(int ndims, const int* sz, int type); - static UMatExpr eye(int rows, int cols, int type); - static UMatExpr eye(Size size, 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); + 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 eye(int rows, int cols, int type); + static UMat eye(Size size, int type); //! allocates new matrix data unless the matrix already has specified size and type. // previous data is unreferenced if needed. - 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(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); //! increases the reference counter; use with care to avoid memleaks void addref(); @@ -1319,6 +1326,7 @@ public: //! custom allocator MatAllocator* allocator; + UMatUsageFlags usageFlags; // usage flags for allocator //! and the standard allocator static MatAllocator* getStdAllocator();