WPF调用Matlab函数的方法
有的时候用C#写图像处理方法,比较费事,不如Matlab简单,但是Matlab又做不出WPF那样的好看界面,怎么办呢。
今天正好我要实现这个功能,就顺便写个小例子,给需要的人做个借鉴。
想要用WPF调用Matlab代码,就用到了Matlab生成.DLL文件的功能。
注:我的VS版本是2013,Matlab版本是2012a,两个软件不算新也不算老,应该是现在普遍用的版本
首先,生成Matlab的.DLL文件
在matlab的左下角选择start-matlab-NE-deploytool,或者直接在command界面输入deploytool。
在弹出的对话框里,输入你需要输入的内容,可以默认,也可以手动填入,Type选项一定要选择.NET Assembly选项。
在Matlab窗口右侧会出现一个对话框,点击Add Class增加一个Class,名字自己填写,然后点击Add Files,选择需要的生成DLL的Matlab函数文件。
然后点击Build按钮,等待进度条走完
当进度条走完以后,在刚才的目录下会生成一个以name命名的文件夹,此文件夹下会有两个文件夹,分别是distrib和src。
在WPF程序下进行引用,浏览,找到MWArray.dll,我的路径是“D:\Program Files\MATLAB\R2012a\toolbox\dotnetbuilder\bin\win32\v2.0”,这个也就是前面会根据不同人安装的Matlab路径不一样而不一样,后面基本是一样的,同时引用distrib文件夹下的JLFG.dll文件。
在WPF的代码中进行引用
using MathWorks.MATLAB.NET.Arrays; using MathWorks.MATLAB.NET.Utility; using JLFG;
写实现部分代码
string proPath = selPath(); JLFG.Iorig iorig = new Iorig(); iorig.I_orig(proPath); ImgPro.Source = BitImg("C:\\I_orig.jpg");
中间的两行代码为调用实现部分,第一行代码是获取图片的路径,最后一行是展示图像用的。
因为Matlab输出是直接用Figure输出,因此需要imwrite进行保存,因此才有了最后一句的调用图像路径。
最终的实现效果
但是,有一个问题出现了,就是我实现的过程用的是Win7 32位的的系统,没有问题,用Win8.1 64位系统就不好使,虽然更换了MWArray.dll的路径为64位的路径,依然不好使,出现如下错误,有知道如何解决这个问题的大神,请告知方法,在此谢谢了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
您可能感兴趣的文章
- 01-10C#调用dos窗口获取相关信息的方法
- 01-10C#及WPF获取本机所有字体和颜色的方法
- 01-10WPF实现类似360安全卫士界面的程序源码分享
- 01-10同步调用和异步调用WebService
- 01-10C#调用WebService实例开发
- 01-10C++调用C#的DLL程序实现方法
- 01-10WPF实现时钟特效
- 01-10超炫酷的WPF实现Loading控件效果
- 01-10C# 调用 JavaWebservice服务遇到的问题汇总
- 01-10基于C#实现手机号码归属地接口调用
阅读排行
本栏相关
- 01-10C#通过反射获取当前工程中所有窗体并
- 01-10关于ASP网页无法打开的解决方案
- 01-10WinForm限制窗体不能移到屏幕外的方法
- 01-10WinForm绘制圆角的方法
- 01-10C#实现txt定位指定行完整实例
- 01-10WinForm实现仿视频播放器左下角滚动新
- 01-10C#停止线程的方法
- 01-10C#实现清空回收站的方法
- 01-10C#通过重写Panel改变边框颜色与宽度的
- 01-10C#实现读取注册表监控当前操作系统已
随机阅读
- 01-10SublimeText编译C开发环境设置
- 01-10delphi制作wav文件的方法
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 04-02jquery与jsp,用jquery
- 01-10C#中split用法实例总结
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 01-11ajax实现页面的局部加载