在 vb.net 中使用 MATLAB 函数
Posted
技术标签:
【中文标题】在 vb.net 中使用 MATLAB 函数【英文标题】:Using MATLAB functions in vb.net 【发布时间】:2014-01-23 12:50:45 【问题描述】:我是 VB.net 的新手,但我必须为我们的项目这样做。我做了一个非常简单的程序来调用我在 vb.net 中制作的 matlab 函数。这个程序很简单,它只需要确定图片框中图片的宽度和高度。
这是我的 matlab 代码并使用 .NET 程序集编译它以导出 .dll 文件:
function [width, height, third] = imageInfo(input)
inImage = imread(input);
[width, height, third] = size(inImage);
end
这是我的程序的 GUI:
这是我制作的vb代码:
Imports MathWorks.MATLAB.NET.Arrays
Imports MathWorks.MATLAB.NET.Utility
Imports imageInfo
Public Class Form1
Public myImageInfo As New imageInfoClass
Dim imageWidth As String
Dim imageHeight As String
Dim result As New MWNumericArray
Dim imagePath As String
Private Sub btnBrowse_Click(sender As Object, e As EventArgs) Handles btnBrowse.Click
If ofdSelectPicture.ShowDialog = DialogResult.OK Then
pbImage.Image = Image.FromFile(ofdSelectPicture.FileName)
imagePath = "'" & ofdSelectPicture.FileName & "'"
End If
End Sub
Private Sub btnProcess_Click(sender As Object, e As EventArgs) Handles btnProcess.Click
result = myImageInfo.imageInfo(imagePath)
tbHeight.Text = imageHeight
tbWidth.Text = imageWidth
End Sub
End Class
运行程序时总是出错。我希望你能帮我解决这个问题。谢谢
【问题讨论】:
如果你能说出你遇到了什么类型的错误,那真的很有帮助。是例外吗?它有消息吗?你什么时候收到这个错误? 这里是错误截图:imagizer.imageshack.us/v2/800x600q90/819/yruy.jpg我在运行程序时遇到了错误。 【参考方案1】:这部分在这里:
result = myImageInfo.imageInfo(imagePath)
imagePath
需要是完整路径。您将其删除并添加逗号
imagePath = "'" & ofdSelectPicture.FileName & "'"
你可以试试:
imagePath = ofdSelectPicture.SafeFileName
【讨论】:
imread
需要文件名的完整路径(除非图像在当前目录中或在 MATLAB 路径中可用),但您不必将其用单引号括起来。 MWArray
桥接类负责将 .NET 字符串转换为 MATLAB 字符串。所以我认为imagePath = ofdSelectPicture.FileName
应该可以工作..
我仍然收到错误消息:Image Info.exe 中出现“System.InvalidOperationException”类型的未处理异常附加信息:创建表单时出错。有关详细信息,请参阅 Exception.InnerException。错误是:“imageInfo.imageInfoClass”的类型初始值设定项引发了异常。
@elvinguitar 你知道如何使用调试器吗?它会对你有很大帮助。您可以在result = myImageInfo.imageInfo(imagePath)
行上放置一个断点,这将使调试器在该行执行之前停止。然后就可以看到imagePath
)的值了。
@MPelletier 抱歉,但我是 vb.net 的新手,不知道如何使用调试器。只是想问一下,我的matlab代码都正确吗?
对于这部分本身我不能说,因为我不知道 Matlab。对不起。以上是关于在 vb.net 中使用 MATLAB 函数的主要内容,如果未能解决你的问题,请参考以下文章