matlab和vc,Vc++和matlab双剑合璧

人家其他图像处理的小组都做完了project,我们小组还在争论用什么写。真蛋疼。自从组队后,我由用java写转成用c++,看到人家用matlab方便,然后我们组改成matlab。到现在,出现了分歧,有人喜欢c++,有人喜欢matlab。对于我这种喜欢偷懒的人,必然爱matlab啊。

然后我突然想起之前一段时间,高中同学刘景辉跟我提起他在搞一个project,结合使用vc++和matlab。不过他貌似通过dll来交互。于是我查了一下资料,没想到vc++和matlab的结合使用挺流行的,并且有很多方法。我就挑了一种我认为比较容易操作的方法试试,就是调用matlab的engine。关于调用engine的函数这篇博客有http://blog.sina.com.cn/s/blog_62466e480100l642.html。

不过在调用之前要做一些配置,有点烦。

1.        必须的步骤:

1.1.    Vs中打开项目属性,点配置属性->vc++目录。

0818b9ca8b590ca3270a3433284dd417.png

1.2.    在包含目录中添加如下

0818b9ca8b590ca3270a3433284dd417.png

其中上面添加的目录为engine.h头文件所在的目录。

1.3.    在库目录下添加如下:

0818b9ca8b590ca3270a3433284dd417.png

其中上面添加的目录为libmx.lib,libmat.lib,libeng.lib,

所在的目录

1.4.    点配置属性->链接器->输入,可以看到附加依赖项

0818b9ca8b590ca3270a3433284dd417.png

1.5.    在附加依赖项中添加:libmx.lib;libmat.lib;libeng.lib三项。

此外,还要配置好环境变量,否则有些dll找不到,比如libmx.dll。

只要把dll所在的文件夹添加到环境变量的path中就可以了。我的电脑是F:\matlab\bin\win32。(在其他电脑运行一定要配置好这个环境变量)

关于配置问题,我参考了一下两个网页:

http://hi.baidu.com/magicdmer/blog/item/4eea2612871267dca6ef3f36.html

以下是加入高斯噪声的代码:

CString strPathName;

strPathName = GetPathName();

//我是用了ta的mfc的demo,GetPathName函数是原有的,就是返回图像的路径

mxArray *path,*img;

Engine *ep;

ep = engOpen(NULL);//打开引擎

if(ep == NULL)

exit(EXIT_FAILURE);

engSetVisible(ep,false);

path  = mxCreateString(strPathName);

engPutVariable(ep,"fileName",path);//在matlab空间加入fileName变量,并赋值

engEvalString(ep,"K=imread(fileName)");//发送读图命令

engEvalString(ep,"J=imnoise(K,'gaussian',0,0.01)");//加入高斯噪声

img = engGetVariable(ep,"J");//这句没什么用,只是当初我想在c++显示图片,后来觉得,干脆直接用matlab显示图片吧

engEvalString(ep,"figure,imshow(J)");//调用matlab显示图片

效果图:

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值