2 u013350225 u013350225 于 2017.08.13 16:29 提问

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

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

3个回答

qq_28249373
qq_28249373   2017.08.13 18:00

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

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

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

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);

Csdn user default icon
上传中...
上传图片
插入图片