Main Content

ocvMxArrayToImage_{DataType}

Convert column major mxArray to row major cv::Mat for image

C++ Syntax

#include "opencvmex.hpp"
void ocvMxArrayToImage_double(const mxArray *in, cv::Mat &out);
void ocvMxArrayToImage_single(const mxArray *in, cv::Mat &out);
void ocvMxArrayToImage_uint8(const mxArray *in, cv::Mat &out);
void ocvMxArrayToImage_uint16(const mxArray *in, cv::Mat &out);
void ocvMxArrayToImage_uint32(const mxArray *in, cv::Mat &out);
void ocvMxArrayToImage_int8(const mxArray *in, cv::Mat &out);
void ocvMxArrayToImage_int16(const mxArray *in, cv::Mat &out);
void ocvMxArrayToImage_int32(const mxArray *in, cv::Mat &out);
void ocvMxArrayToImage_bool(const mxArray *in, cv::Mat &out);

cv::Ptr<cv::Mat> ocvMxArrayToImage_double(const mxArray *in, const bool copyData = true);
cv::Ptr<cv::Mat> ocvMxArrayToImage_single(const mxArray *in, const bool copyData = true);
cv::Ptr<cv::Mat> ocvMxArrayToImage_uint8(const mxArray *in, const bool copyData = true);
cv::Ptr<cv::Mat> ocvMxArrayToImage_uint16(const mxArray *in, const bool copyData = true);
cv::Ptr<cv::Mat> ocvMxArrayToImage_uint32(const mxArray *in, const bool copyData = true);
cv::Ptr<cv::Mat> ocvMxArrayToImage_int8(const mxArray *in, const bool copyData = true);
cv::Ptr<cv::Mat> ocvMxArrayToImage_int16(const mxArray *in, const bool copyData = true);
cv::Ptr<cv::Mat> ocvMxArrayToImage_int32(const mxArray *in, const bool copyData = true);
cv::Ptr<cv::Mat> ocvMxArrayToImage_bool(const mxArray *in, const bool copyData = true);

Arguments

in

Pointer to a MATLAB® struct, mxArray, having column major data that represents a 2-D or 3-D image. Supported data types:

real_T (double)uint8_T (uint8)uint32_T (uint32)int16_T (int16)
real32_T (single)uint16_T (uint16)int8_T (int8)int32_T (int32)

copyData

Boolean flag to copy data from mxArray to the Mat object.

  • true (default) — The function transposes and interleaves (for RGB images) column major mxArray data into a row major cv::Mat object.

  • false — No data copies from the mxArray to the Mat object. The function creates a new Mat wrapper and uses it to point to the mxArray data. Because OpenCV is row-based and MATLAB is column-based, the columns of the mxArray become the rows of the Mat object. If the image is 2-D, then copyData is false.

out

Reference to OpenCV cv::Mat with row major data.

Returns

The functions that set copyData return an OpenCV smart pointer (cv::Ptr) to a cv::Mat object.

Description

The ocvMxArrayToImage_{DataType} function applies to two C++ implementations. One set returns void and the other set returns an OpenCV smart pointer. The functions that return void reallocate memory for the cv::Mat if needed.

The ocvMxArrayToImage_{DataType} transposes and interleaves column major mxArray data into row major cv::Mat. The ocvMxArrayToImage_{DataType} function supports 2-D and 3-D images.

These functions are not a generic matrix conversion routine. For 3-D images, they take into account that the OpenCV format uses BGR ordering and manipulate the data to comply with that formatting.

Version History

Introduced in R2015a