2 u013350225 u013350225 于 2017.08.13 16:29 提问

关于C++与Matlab混合编程时数据类型的转换问题,急需大神来拯救……

请教一下:
一个图像处理程序,用Opencv读取图像进来是Mat格式,但是我调用的函数中需要变量是double类型的,请问该怎么转化才把Mat类型转换成可以被该函数调用的形式,调用完之后输出的double类型又怎么转换成Mat从而把图像显示出来?
新手,望大神不吝赐教啊,查了很久资料也没弄清楚怎么做?

4个回答

qq_28249373
qq_28249373   2017.08.14 16:03
已采纳

你是讲MATLAB的函数导出为dll,然后在C++中调用?你那个Mat参数是不是一个矩阵?如果是,那么在C++中,应该用double类型的指针来接收数据
比如在MATLAB中,函数为func(Mat m),那么在C++中调用用该是double m[x][y];func(m);

qq_28249373
qq_28249373   2017.08.13 18:00

你要看看Mat类型到底是怎么定义的,你知道Mat的结构是怎么样的,你就知道如何处理了。Mat是矩阵吧,如果是,它应该就是一个二维数组。用一个二维数组接收数据就可以了。

u013350225
u013350225 回复阳光的味道33: 是 参数 ,不好意思
11 个月之前 回复
u013350225
u013350225 是c++调用matlab程序,要调用的函数的输入蚕食类型是 *double,不知道怎么转过去
11 个月之前 回复
u013350225
u013350225 新手,很多问题不太懂……
11 个月之前 回复
u013350225
u013350225 但是还有个问题,就是怎么最后再把数组给转换回来,显示为图像啊
11 个月之前 回复
u013350225
u013350225 意思是建一个数组把数据复制过来?
11 个月之前 回复
qq_28249373
qq_28249373   2017.08.14 11:54

Mat类型就是二维数组,不需要再转换,二维数组的元素保存着图像每个像素的数值。我不太明白你的意图,你是C++调用MATLAB的函数,还是MATLAB调用C++的函数。

u013350225
u013350225   2017.08.20 09:43

感谢 要上天的拉布拉多 ,解决了我的问题~

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
【转】Matlab和C#混合编程
本文转载自:http://emuch.net/html/201311/6617105.html 在实验室算法演示和工程应用中存在这样的困惑: 1. Matlab精通各种数值计算和算法,但是没有优美的界面,更不用说对数据库访问操作。 2.Visual studio(C#)拥有完美的界面编程,窗口或网络编程已经优越的数据库访问等优势。 -------------------------
C/C++与Matlab混合编程
将matlab下的项目转移到C++下,配置opencv图像库,C++通过matab引擎调用matlab绘图
java matlab混合编程之返回值Struct类型
 java matlab混合编程的时候当返回值是Struct类型(matlab中的返回类型)如何来取得(java中)其值? 上网找,看到这个网页:http://www.mathworks.cn/cn/help/matlab/matlab_external/passing-data-to-a-java-method.html,上面说Struct类型不支持;如下图:
MATLAB.NET混合编程之四~~从Matlab向C#的数据类型转化
上一篇《MATLAB.NET混合编程之三~~从C#向Matlab的数据类型转化》中已经详细介绍了从C#向Matlab传递数据时使用的方法,那么Matlab计算完成后在C#中应该怎么获取它的计算数据呢?需要遵循两个基本步骤。
Matlab 和 C/C++混合编程
说明: 这篇博文是对下面两边博文进行总结和整理,以及补充。 blog: http://blog.csdn.net/jtop0/article/details/7657227 http://blog.csdn.net/zouxy09/article/details/20553007 1. Motivation      Matlab 擅长于矩阵运算,含有数据分析处理
matlab和c++混合编程---方法和步骤
摘要:Matlab具有很强的数值计算和分析等能力,而C/C++是目前最为流行的高级程序设计语言,两者互补结合的混合编程在科学研究和工程实践中具有非常重要的意义。从Matlab调用C/C++代码及C/C++调用m文件两方面,深入地研究了它们之间混合编程的原理和实现机制,并且给出了具体条件下的混合编程方法和步骤。实验表明,给出的Matlab与C/C++混合编程接口及应用方法是有效、实用的。
MATLAB和C/C++混合编程实现图像处理(一)
MATLAB具有丰富的图像处理函数库,运算速度慢,特别是在多重循环的情况下,不适合直接应用于工程当中。如果能把MATLAB和另一种适合工程的编程语言结合到一起运用到数字图像处理领域,则会更加方便的进行图像处理,MATLAB和C/C++的混合编程,既继承了MATLAB的优点,又拥有了C/C++运算速度快、适合工程应用的特点。 一、MATLAB引擎与运行环境配置 1.MATLAB引擎 MATLA
Matlab/C++混合编程之mxArray的访问
在Matlab/C++混合编程中,所有与变量有关的数据类型都是mxArray类型,因此对mxArray的访问是必不可少,数据结构mxArray以及大量的mx开头的函数,广泛用于Matlab 与C、C++的混合编程中。 mxArray的相关操作有: 1、 创建和清除mxArray型数据  Matlab有很多种变量类型,对应于每种类型,基本上都有一个函数用于创建,但它们都有相同的数据结构,
Matlab/C++混合编程中见过的函数
记录一下Matlab/C++混合编程中见到或用过的函数   double *mxGetPr(const mxArray *array_ptr);获取mxArray中的实数数据,返回数据的起始指针 const mwSize *mxGetDimensions(const mxArray *pm);得到一个指向维度数组的指针mwSize mxGetNumberOfDimensions(cons
C语言中类型转换时的数据丢失问题
当把较长的整数转化为较短的整数或是char类型时,超出的高位部分将被丢弃。 程序一: #include int main() { int i; char c; i=65535; c=48; i=c; c=i; printf("char=%c\n",c);