0
私は大きなMatをとり、mexを使ってMatLabで使用しようとしているOpenCVプログラムをC++で持っています(特にmexOpenCVはここに:https://github.com/kyamagu/mexopencv)。 plhs [0] = MxArray(theMats [0])を使って、単一のMatをplhs [0]に戻すことはできますが、どのようにベクトル全体を返すことができますか?OpenCV C++マットのベクターをmex経由でMatLabに返す方法
ありがとうございました!
マトリックスとしてのcv ::マットがそれぞれ各CVを返して、異なるサイズのものとすることができる一般的なケース::マットに#include "mexopencv.hpp"
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
// Check number of arguments
nargchk(nlhs<=1 && nrhs==1);
// Convert mxArray to cv::Mat
cv::Mat mat = MxArray(prhs[0]).toMat();
std::vector<cv::Mat> theMats;
int ySize = 400;
int xSize = 400;
int yStride = ySize;
int xStride = xSize;
int cols = (mat.cols-xSize)/xStride + 1;
int rows = (mat.rows-ySize)/yStride + 1;
for (int i=0; i<cols; i++){
for (int j=0; j<rows; j++){
cv::Rect crop(cv::Point(i*xStride,j*yStride),
cv::Point(i*xStride+xSize, j*yStride+ySize));
theMats.push_back(mat(crop));
}
}
// Convert cv::Mat back to mxArray
plhs[0] = MxArray(theMats[0]); //I want theMats, not just theMats[0]
}