c++与MATLAB混编mxarray转换为opencv中的mat
main函数的部分代码:
mxArray *Output[4] = {NULL};
mlxColAdjCloning(4,Output,3,Input);
Mat alphaImg;
ImgClon.mxarray2mat(Output[0],alphaImg);
imwrite(folder+"alphaImg.jpg",alphaImg);
其中mxarray2mat为mxarray转换为opencv中的mat的函数,代码如下:
void MyImageCloning::mxarray2mat(const mxArray *arr,Mat &img)
{
mwSize n = mxGetNumberOfDimensions(arr);
unsigned long M = mxGetM(arr);
unsigned long N = mxGetN(arr);
uchar *imgData = NULL;
if (n == 2)//mxIsUint8(arr) &&
{
imgData = (uchar *)mxGetPr(arr);
unsigned long h = M;
unsigned long w = N;
Mat tempimg(h, w, CV_8UC1);
size_t subs[2]; // 单通道图像
for (unsigned long i = 0; i < h; i++)
{
subs[0] = i;
for (unsigned long j = 0; j < w; j++)
{
subs[1] = j;
mwIndex index = mxCalcSingleSubscript(arr, 2, subs);
tempimg.row(i).col(j).data[0] = imgData[index];
}
}
tempimg.copyTo(img);
}
else if (n == 3)//mxIsUint8(arr) &&
{
imgData = (uchar *)mxGetData(arr);//mxGetPr(arr);
unsigned long h = M;
unsigned long w = N/3;
Mat tempimg(h, w, CV_8UC3);
//size_t subs[3]; // 三通道图像就需要 subs [3],
for (unsigned long i=0;i<h;i++)
{
for (unsigned long j=0;j<w;j++)
{
for (unsigned int ch=0;ch<n;ch++)
{
tempimg.row(i).col(j).data[n-1-ch] = imgData[j*h+i+ch*h*w];
}
}
}
tempimg.copyTo(img);
}
}
最后生成的alphaImg.jpg如下:

请问各位大神是怎么回事呢?
相关推荐
mxArray,IplImage,CvMat转换类
下面,我们将深入探讨这三种数据类型的定义、用途以及它们之间的转换方法。`mxArray`是MATLAB C/C++接口中用于表示MATLAB工作空间中的变量的数据结构。
相关滤波目标跟踪算法fDSST_code.zip
本文介绍了MxArray类的实现,用于在OpenCV和Matlab之间进行数据类型转换。涵盖了多种OpenCV数据结构如cv::Mat、cv::KeyPoint等到Matlab mxArray的映射及
OpenCV到MATLAB的数据转换指南:XML到MAT文件的矩阵转换
XML(Extensible Markup Language)可扩展标记语言,是一种标记语言,被设计用来传输和存储数据。与HTML(HyperText Markup Language)不同,XML的重点不在于如何显示数据,而在于描述数据,并保持数据的自我描述性。这种特性使得XML在不同的平台、不同应用间交换数据时非常有用。OpenCV是一个强大的计算机视觉库,广泛应用于图像处理、视频分析和计算机视觉领域。为了提高性能,OpenCV使用了自己定义的数据结构,即cv::Mat。
技术转移机构如何基于数据提升项目撮合精准度?.docx
技术转移机构如何基于数据提升项目撮合精准度?
超扭滑模与快速终端滑模的永磁同步电机无感控制:理论、离散化实现与仿真研究(Simulink仿真实现)
内容概要:本文系统研究了超扭滑模控制(STSMC)与快速终端滑模控制(FTSMC)在永磁同步电机(PMSM)无感控制中的应用,重点涵盖其理论基础、离散化实现方法及Simulink仿真验证。文章深入阐述了两种高阶滑模控制策略的设计原理,利用磁链无感观测技术实现转子位置与速度的精确估计,从而省去物理传感器,有效提升了系统的可靠性与鲁棒性。同时,提供了完整的Simulink仿真模型构建方案,包括控制器设计、关键参数整定及动态响应性能分析,充分验证了所提出的方法在零速与低速工况下的卓越控制性能和有效性。; 适合人群:具备电机控制、现代控制理论基础知识及熟练掌握MATLAB/Simulink仿真技能的研究生、科研人员与工程技术人员。; 使用场景及目标:①深入理解高阶滑模控制在电机驱动系统中的设计思想与具体实现;②掌握基于滑模观测器的无感控制核心技术;③开展永磁同步电机高性能控制算法的理论研究、仿真验证与工程化探索。; 阅读建议:建议将文中详尽的理论推导与Simulink仿真模型相结合进行学习,重点关注滑模面的构建、抖振抑制策略的实施以及离散化处理的细节,有条件的研究者可进一步将算法移植到DSP等硬件平台进行实验验证,以深化对理论的理解并检验其实际应用效果。


其它技术问题
