前些天帮同学调试关于matlab的毕业设计,图像处理的。具体的实现倒没什么,开始需要我帮忙的是在VC里显示MATLAB的处理结果。
我非常偷懒的想法是,直接用一个按钮响应点击事件,然后处理函数里调exe.这样有一个坏处是,其实跟VC没什么关系,之间也没有交互。
下面是生成exe的参考
一、生成独立可执行的程序(exe文件)步骤
1、安装编译器。可有多种选择,matlab自带了一个LCC,推荐使用VC++6.0。
2、设置编译器。在matlab命令行输入mbuild –setup以及mex –setup,选择安装的c编译器。
3、调用编译器。此处使用MATLAB下的一个GUI平台deploytool下完全实现。当然,也可以输入mcc -m filaname, filaname为要转成exe的m文件;
PS:我使用的就是mcc命令。这里关于deploy使用都是说请看帮助,其实也没什么,就是新建一个deploy工程,在右边会有让引入主文件,和资源的窗口,把要生成EXE的.m文件引入,把要处理的图片之类的资源引入,使用mcc命令即可。
注:在以前的版本中,用编译命令mcc -B sglcpp filaname;自2006的版本后,替换为mcc -mfilaname;
4、安装<matlab path>\toolbox\compiler\deploy\win32目录下的MCRInstaller。
第四步的MCR是为了在没有matlab的电脑环境下运行,这一步我没有细看。
生成EXE后在VC的按钮响应函数里调用
WinExec("xxx.exe",1)//参数是文件路径名,与显示方式。
具体如下:
单击“工程”菜单——>部件——>部件对话框——>在“控件”选项卡中选择“Microsoft Windows Common Control6.0”点击“确定”按钮,如图4.5。之后可以看到工具栏中增加了项目,将它从工具栏拖拽到设计界面中。 然后添加并设置所需要的功能的按钮,进行工具栏的设计,如图4.6。
图4.5添加“Microsoft Windows Common Control6.0”控件
Fig. 4.5 Add “Microsoft Windows Common Control6.0”control
对了,这里可能会出现无法注册的问题,使用管理员模式打开工程,使用浏览(B)去添加部件。
或者把.ocx文件拷贝到c:\windows\System32 然后运行cmd
使用命令
Regsvr32 C:\windows\system32\Mscomm32.ocx
图4.6制作工具栏
Fig. 4.6 Make the toolbar
设计图形显示界面:
完成菜单栏,工具栏的创建以后,可以在窗体中创建两个picture图片框,在窗体上建立一大一小两个水平排列的图片框,左边的图片框(名称:picture1)小一点,用来显示待处理图片,右边的图片框(名称:picture2)大一点,用来显示处理后的效果图片。整个电弧图像处理系统的界面完成图如图4.7所示。
图4.7 界面完成图
Fig. 4.7 The completed interface diagram
请输入文件名后面是控件Text1打开按键的点击响应函数是
picname = Me.Text1.Text <pre name="code" class="html"><p>Picture1.Picture = LoadPicture(App.Path & "\" & picname)</p>
Picture1.Picture = LoadPicture("F:\java\" & picname)
为工具栏上的各种实现电弧图像处理的功能按钮添加相应功能的代码,实现VB对MATLAB图像处理程序的调用,对于选则某种功能按钮实现相应功能
<pre name="code" class="vb">Private Sub Command1_Click() Set matlab = CreateObject("matlab.application") Dim matlab As Object Clipboard.Clear matlab.execute ("x=[1 2 4],y=[4 6 7];plot(x,y)") '此处输入matlab中命令 matlab.execute ("print -dbitmap;close") '把所作图以位图形式保存在剪贴板中,并关闭 Me.Picture2.Picture = Clipboard.GetData() '将剪贴板中图像在image控件中显示出来 End Sub
matlab.execute ()
时间与能力有限,有个问题没解决,我想直接掉用
Shell "nouse1.exe "并且能在VB里截取matlab中图像并关闭matlab.exe。如何处理,有想法的请指教。