Class representing 1 to 4-channel matrix of float or uchar, stored on CPU and/or GPU side. More...
Functions | |
Mat () | |
Default constructor. More... | |
Mat (size_t width, size_t height, MAT_TYPE mat_type, MEM memory_type=MEM::CPU) | |
Constructor. More... | |
Mat (size_t width, size_t height, MAT_TYPE mat_type, sl::uchar1 *ptr, size_t step, MEM memory_type=MEM::CPU) | |
Constructor from an existing data pointer. More... | |
Mat (size_t width, size_t height, MAT_TYPE mat_type, sl::uchar1 *ptr_cpu, size_t step_cpu, sl::uchar1 *ptr_gpu, size_t step_gpu) | |
Constructor from two existing data pointers, CPU and GPU. More... | |
Mat (Resolution resolution, MAT_TYPE mat_type, MEM memory_type=MEM::CPU) | |
Constructor from an sl::Resolution. More... | |
Mat (Resolution resolution, MAT_TYPE mat_type, sl::uchar1 *ptr, size_t step, MEM memory_type=MEM::CPU) | |
Constructor from an existing data pointer. More... | |
Mat (Resolution resolution, MAT_TYPE mat_type, sl::uchar1 *ptr_cpu, size_t step_cpu, sl::uchar1 *ptr_gpu, size_t step_gpu) | |
Constructor from two existing data pointers, CPU and GPU. More... | |
Mat (const Mat &mat) | |
Copy constructor (shallow copy). More... | |
void | alloc (size_t width, size_t height, MAT_TYPE mat_type, MEM memory_type=MEM::CPU) |
Allocates the sl::Mat memory. More... | |
void | alloc (Resolution resolution, MAT_TYPE mat_type, MEM memory_type=MEM::CPU) |
Allocates the sl::Mat memory. More... | |
~Mat () | |
Destructor. More... | |
void | free (MEM memory_type=MEM::CPU|MEM::GPU) |
Free the owned memory. More... | |
Mat & | operator= (const Mat &that) |
Performs a shallow copy. More... | |
ERROR_CODE | updateCPUfromGPU (cudaStream_t stream=0) |
Downloads data from DEVICE (GPU) to HOST (CPU), if possible. More... | |
ERROR_CODE | updateGPUfromCPU (cudaStream_t stream=0, int GPU_id=0) |
Uploads data from HOST (CPU) to DEVICE (GPU), if possible. More... | |
ERROR_CODE | copyTo (Mat &dst, COPY_TYPE cpyType=COPY_TYPE::CPU_CPU, cudaStream_t stream=0) const |
Copies data an other sl::Mat (deep copy). More... | |
ERROR_CODE | setFrom (const Mat &src, COPY_TYPE cpyType=COPY_TYPE::CPU_CPU, cudaStream_t stream=0) |
Copies data from an other sl::Mat (deep copy). More... | |
ERROR_CODE | read (const String &filePath) |
Reads an image from a file. More... | |
ERROR_CODE | write (const String &filePath, sl::MEM memory_type=sl::MEM::CPU, int compression_level=-1) |
Writes the sl::Mat (only if sl::MEM::CPU is available) into a file defined by its extension. More... | |
template<typename T > | |
ERROR_CODE | setTo (const T &value, const sl::MEM memory_type=MEM::CPU, cudaStream_t stream=0) |
Fills the sl::Mat with the given value. More... | |
template<typename N > | |
ERROR_CODE | setValue (const size_t x, const size_t y, const N &value, const sl::MEM memory_type=MEM::CPU) |
Sets a value to a specific point in the matrix. More... | |
template<typename N > | |
ERROR_CODE | getValue (const size_t x, const size_t y, N *value, const MEM memory_type=MEM::CPU) const |
Returns the value of a specific point in the matrix. More... | |
size_t | getWidth () const |
Returns the width of the matrix. More... | |
size_t | getHeight () const |
Returns the height of the matrix. More... | |
Resolution | getResolution () const |
Returns the resolution (width and height) of the matrix. More... | |
size_t | getChannels () const |
Returns the number of values stored in one pixel. More... | |
MAT_TYPE | getDataType () const |
Returns the format of the matrix. More... | |
MEM | getMemoryType () const |
Returns the type of memory (CPU and/or GPU). More... | |
template<typename N > | |
N * | getPtr (const MEM memory_type=MEM::CPU) const |
Returns the CPU or GPU data pointer. More... | |
size_t | getStepBytes (const MEM memory_type=MEM::CPU) const |
Returns the memory step in bytes (size of one pixel row). More... | |
template<typename N > | |
size_t | getStep (MEM memory_type=MEM::CPU) const |
Returns the memory step in number of elements (size in one pixel row). More... | |
size_t | getStep (MEM memory_type=MEM::CPU) const |
Returns the memory step in number of elements (size in one pixel row). More... | |
size_t | getPixelBytes () const |
Returns the size of one pixel in bytes. More... | |
size_t | getWidthBytes () const |
Returns the size of a row in bytes. More... | |
String | getInfos () |
Returns the information about the sl::Mat into a sl::String. More... | |
bool | isInit () const |
Returns whether the sl::Mat is initialized or not. More... | |
bool | isMemoryOwner () const |
Returns whether the sl::Mat is the owner of the memory it accesses. More... | |
ERROR_CODE | clone (const Mat &src) |
Duplicates a sl::Mat by copy (deep copy). More... | |
ERROR_CODE | move (Mat &dst) |
Moves the data of the sl::Mat to another sl::Mat. More... | |
Static Functions | |
static void | swap (Mat &mat1, Mat &mat2) |
Swaps the content of the provided sl::Mat (only swaps the pointers, no data copy). More... | |
Attributes | |
String | name = "n/a" |
Variable used in verbose mode to indicate which sl::Mat is printing informations. More... | |
bool | verbose = false |
Whether the sl::Mat can display informations. More... | |
Timestamp | timestamp = 0 |
Timestamp of the last manipulation of the data of the matrix by a method/function. More... | |
Class representing 1 to 4-channel matrix of float or uchar, stored on CPU and/or GPU side.
This class is defined in a row-major order, meaning that for an image buffer, the rows are stored consecutively from top to bottom.
The CPU and GPU buffer aren't automatically synchronized for performance reasons, you can use updateCPUfromGPU / updateGPUfromCPU to do it.
If you are using the GPU side of the sl::Mat object, you need to make sure to call free before destroying the sl::Camera object.
The destruction of the sl::Camera object deletes the CUDA context needed to free the GPU sl::Mat memory.
Constructor.
Initializes the sl::Mat and allocates the requested memory by calling alloc().
width | : Width of the matrix in pixels. |
height | : Height of the matrix in pixels. |
mat_type | : Type of the matrix (sl::MAT_TYPE::F32_C1, sl::MAT_TYPE::U8_C4, etc.). |
memory_type | : Where the buffer will be stored (sl::MEM::CPU and/or sl::MEM::GPU). |
Mat | ( | size_t | width, |
size_t | height, | ||
MAT_TYPE | mat_type, | ||
sl::uchar1 * | ptr, | ||
size_t | step, | ||
MEM | memory_type = MEM::CPU |
||
) |
Constructor from an existing data pointer.
Initializes the sl::Mat but does not allocate the memory.
width | : Width of the matrix in pixels. |
height | : Height of the matrix in pixels. |
mat_type | : Type of the matrix (sl::MAT_TYPE::F32_C1, sl::MAT_TYPE::U8_C4, etc.). |
ptr | : Pointer to the data array (CPU or GPU). |
step | : Step of the data array (bytes size of one pixel row). |
memory_type | : Where the buffer will be stored (sl::MEM::CPU and/or sl::MEM::GPU). |
Mat | ( | size_t | width, |
size_t | height, | ||
MAT_TYPE | mat_type, | ||
sl::uchar1 * | ptr_cpu, | ||
size_t | step_cpu, | ||
sl::uchar1 * | ptr_gpu, | ||
size_t | step_gpu | ||
) |
Constructor from two existing data pointers, CPU and GPU.
Initializes the sl::Mat but does not allocate the memory.
width | : Width of the matrix in pixels. |
height | : Height of the matrix in pixels. |
mat_type | : Type of the matrix (sl::MAT_TYPE::F32_C1, sl::MAT_TYPE::U8_C4, etc.). |
ptr_cpu | : CPU pointer to the data array. |
step_cpu | : Step of the CPU data array (bytes size of one pixel row). |
ptr_gpu | : GPU pointer to the data array. |
step_gpu | : Step of the GPU data array (bytes size of one pixel row). |
Mat | ( | Resolution | resolution, |
MAT_TYPE | mat_type, | ||
MEM | memory_type = MEM::CPU |
||
) |
Constructor from an sl::Resolution.
Initializes the sl::Mat and allocates the requested memory by calling alloc().
resolution | : Size of the matrix in pixels. |
mat_type | : Type of the matrix (sl::MAT_TYPE::F32_C1, sl::MAT_TYPE::U8_C4, etc.). |
memory_type | : Where the buffer will be stored (sl::MEM::CPU and/or sl::MEM::GPU). |
Mat | ( | Resolution | resolution, |
MAT_TYPE | mat_type, | ||
sl::uchar1 * | ptr, | ||
size_t | step, | ||
MEM | memory_type = MEM::CPU |
||
) |
Constructor from an existing data pointer.
Initializes the sl::Mat but does not allocate the memory.
resolution | : Size of the matrix in pixels. |
mat_type | : Type of the matrix (sl::MAT_TYPE::F32_C1, sl::MAT_TYPE::U8_C4, etc.). |
ptr | : Pointer to the data array (CPU or GPU). |
step | : Step of the data array (bytes size of one pixel row). |
memory_type | : Where the buffer will be stored (sl::MEM::CPU and/or sl::MEM::GPU). |
Mat | ( | Resolution | resolution, |
MAT_TYPE | mat_type, | ||
sl::uchar1 * | ptr_cpu, | ||
size_t | step_cpu, | ||
sl::uchar1 * | ptr_gpu, | ||
size_t | step_gpu | ||
) |
Constructor from two existing data pointers, CPU and GPU.
Initializes the sl::Mat but does not allocate the memory.
resolution | : Size of the matrix in pixels. |
mat_type | : Type of the matrix (sl::MAT_TYPE::F32_C1, sl::MAT_TYPE::U8_C4, etc.). |
ptr_cpu | : CPU pointer to the data array. |
step_cpu | : Step of the CPU data array (bytes size of one pixel row). |
ptr_gpu | : GPU pointer to the data array. |
step_gpu | : Step of the GPU data array (bytes size of one pixel row). |
Allocates the sl::Mat memory.
width | : Width of the matrix in pixels. |
height | : Height of the matrix in pixels. |
mat_type | : Type of the matrix (sl::MAT_TYPE::F32_C1, sl::MAT_TYPE::U8_C4, etc.). |
memory_type | : Where the buffer will be stored (sl::MEM::CPU and/or sl::MEM::GPU). |
void alloc | ( | Resolution | resolution, |
MAT_TYPE | mat_type, | ||
MEM | memory_type = MEM::CPU |
||
) |
Allocates the sl::Mat memory.
resolution | : Size of the matrix in pixels. |
mat_type | : Type of the matrix (sl::MAT_TYPE::F32_C1, sl::MAT_TYPE::U8_C4, etc.). |
memory_type | : Where the buffer will be stored (sl::MEM::CPU and/or sl::MEM::GPU). |
Free the owned memory.
memory_type | : Specifies whether you want to free the sl::MEM::CPU and/or sl::MEM::GPU memory. |
ERROR_CODE updateCPUfromGPU | ( | cudaStream_t | stream = 0 | ) |
Downloads data from DEVICE (GPU) to HOST (CPU), if possible.
stream | : Specifies the GPU stream to be used to enable asynchronous overlapping. Default: 0 (synchronous) |
ERROR_CODE updateGPUfromCPU | ( | cudaStream_t | stream = 0 , |
int | GPU_id = 0 |
||
) |
Uploads data from HOST (CPU) to DEVICE (GPU), if possible.
stream | : Specifies the GPU stream to be used to enable asynchronous overlapping. Default: 0 (synchronous) |
ERROR_CODE copyTo | ( | Mat & | dst, |
COPY_TYPE | cpyType = COPY_TYPE::CPU_CPU , |
||
cudaStream_t | stream = 0 |
||
) | const |
Copies data an other sl::Mat (deep copy).
dst | : sl::Mat where the data will be copied. |
cpyType | : Specifies the memory that will be used for the copy. |
stream | : Specifies the GPU stream to be used to enable asynchronous overlapping. Default: 0 (synchronous) |
ERROR_CODE setFrom | ( | const Mat & | src, |
COPY_TYPE | cpyType = COPY_TYPE::CPU_CPU , |
||
cudaStream_t | stream = 0 |
||
) |
Copies data from an other sl::Mat (deep copy).
src | : sl::Mat where the data will be copied from. |
cpyType | : Specifies the memory that will be used for the copy. |
stream | : Specifies the GPU stream to be used to enable asynchronous overlapping. Default: 0 (synchronous) |
ERROR_CODE read | ( | const String & | filePath | ) |
Reads an image from a file.
filePath | : Path of the file to read (including the name and extension). |
ERROR_CODE write | ( | const String & | filePath, |
sl::MEM | memory_type = sl::MEM::CPU , |
||
int | compression_level = -1 |
||
) |
Writes the sl::Mat (only if sl::MEM::CPU is available) into a file defined by its extension.
filePath | : Path of the file to write in (including the name and extension). |
memory_type | : Memory type (CPU or GPU) of the sl::Mat. |
compression_level | : Level of compression between 0 (lowest compression == highest size == highest quality(jpg)) and 100 (highest compression == lowest size == lowest quality(jpg)). |
ERROR_CODE setTo | ( | const T & | value, |
const sl::MEM | memory_type = MEM::CPU , |
||
cudaStream_t | stream = 0 |
||
) |
Fills the sl::Mat with the given value.
This method overwrites all the matrix.
value | : Value to be copied all over the matrix. |
memory_type | : Which buffer to fill, CPU and/or GPU. |
stream | : a cuda stream to put the compute to (default 0). |
ERROR_CODE setValue | ( | const size_t | x, |
const size_t | y, | ||
const N & | value, | ||
const sl::MEM | memory_type = MEM::CPU |
||
) |
Sets a value to a specific point in the matrix.
x | : Column of the point to change. |
y | : Row of the point to change. |
value | : Value to be set. |
memory_type | : Which memory will be updated. |
ERROR_CODE getValue | ( | const size_t | x, |
const size_t | y, | ||
N * | value, | ||
const MEM | memory_type = MEM::CPU |
||
) | const |
Returns the value of a specific point in the matrix.
x | : Column of the point to get the value from. |
y | : Row of the point to get the value from. |
memory_type | : Which memory should be read. |
|
inline |
Returns the width of the matrix.
|
inline |
Returns the height of the matrix.
|
inline |
Returns the resolution (width and height) of the matrix.
|
inline |
Returns the number of values stored in one pixel.
|
inline |
Returns the format of the matrix.
|
inline |
Returns the type of memory (CPU and/or GPU).
Returns the CPU or GPU data pointer.
memory_type | : Specifies whether you want sl::MEM::CPU or sl::MEM::GPU. |
Returns the memory step in bytes (size of one pixel row).
memory_type | : Specifies whether you want sl::MEM::CPU or sl::MEM::GPU step. |
Returns the memory step in number of elements (size in one pixel row).
memory_type | : Specifies whether you want sl::MEM::CPU or sl::MEM::GPU step. |
Returns the memory step in number of elements (size in one pixel row).
memory_type | : Specifies whether you want sl::MEM::CPU or sl::MEM::GPU step. |
|
inline |
Returns the size of one pixel in bytes.
|
inline |
Returns the size of a row in bytes.
String getInfos | ( | ) |
Returns the information about the sl::Mat into a sl::String.
|
inline |
|
inline |
ERROR_CODE clone | ( | const Mat & | src | ) |
ERROR_CODE move | ( | Mat & | dst | ) |
String name = "n/a" |
Variable used in verbose mode to indicate which sl::Mat is printing informations.
Default set to "n/a" to avoid empty string if not filled.
bool verbose = false |
Whether the sl::Mat can display informations.
Timestamp timestamp = 0 |
Timestamp of the last manipulation of the data of the matrix by a method/function.