2014-01-23 5 views
0

저는 VB.net을 처음 사용합니다. 그러나이 프로젝트를 위해이 작업을 수행해야합니다. 나는 vb.net에서 만든 matlab 함수를 호출하는 매우 간단한 프로그램을 만들었다. 이 프로그램은 간단합니다, 그것은 단지 그림 상자에서 이미지의 너비와 높이를 결정합니다.vb.net에서 MATLAB 함수 사용

여기 내 MATLAB 코드입니다 및 .dll 파일 내보내려면 .NET 어셈블리를 사용하여 컴파일 : 여기

function [width, height, third] = imageInfo(input) 
inImage = imread(input); 
[width, height, third] = size(inImage); 
end 

이 내 프로그램의 GUI의 :

enter image description here

을 그리고 여기에 비주얼 베이직의 내가 만든 코드 :

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 

항상 오류가 발생했습니다. 프로그램을 unning. 이걸 가지고 나를 도울 수 있기를 바랍니다.

+0

. 그것은 예외입니까? 메시지가 있습니까? 언제 그 오류가 발생합니까? – MPelletier

+0

다음은 오류의 스크린 샷입니다. http://imagizer.imageshack.us/v2/800x600q90/819/yruy.jpg 프로그램을 실행할 때 오류가 발생했습니다. – elvinguitar

답변

0

이 부분 당신을 감사합니다

result = myImageInfo.imageInfo(imagePath) 

imagePath 필요가 전체 경로가 될 수 있습니다. 당신은 당신이 시도 할 수 그것을 제거하고

imagePath = "'" & ofdSelectPicture.FileName & "'" 

에 쉼표를 추가 : 당신은 당신이 얻고있는 오류의 유형을 말할 수 있다면 정말 도움이 될

imagePath = ofdSelectPicture.SafeFileName 
+0

'imread'는 파일 이름의 전체 경로가 필요합니다 (이미지가 현재 디렉토리에 있거나 MATLAB 경로에서 사용 가능한 경우는 제외). 작은 따옴표로 묶을 필요는 없습니다. 'MWArray' 브릿지 클래스는 .NET 문자열을 MATLAB 문자열로 변환합니다. 그래서'imagePath = ofdSelectPicture.FileName'이 작동해야한다고 생각합니다. – Amro

+0

여전히 오류가 발생합니다 : Image Info.exe에서 'System.InvalidOperationException'유형의 처리되지 않은 예외가 발생했습니다. 추가 정보 : 양식을 만드는 동안 오류가 발생했습니다. . 자세한 내용은 Exception.InnerException을 참조하십시오. 오류 : 'imageInfo.imageInfoClass'의 형식 이니셜 라이저에서 예외가 발생했습니다. – elvinguitar

+0

@elvinguitar 디버거 사용법을 알고 있습니까? 그것은 당신을 크게 도울 것입니다. 'result = myImageInfo.imageInfo (imagePath)'줄에 중단 점을 넣을 수 있습니다. 그러면 디버거가 해당 줄을 실행하기 전에 중단됩니다. 그러면'imagePath'의 값을 볼 수 있습니다). – MPelletier