雖然IronPython不是我的專業知識,但我對EMGU及其應用程序非常熟悉。如果您在使用IronPython的堅持以下網站清楚地顯示瞭如何將字符串傳遞給IronPython Class.
下面的代碼從連桿取,而不是我自己:
Option Explicit On
Option Strict On
Imports Microsoft.Scripting.Hosting
Imports IronPython.Hosting
Imports IronPython.Runtime.Types
Module Module1
Sub Main()
Dim helloWorld As New HelloWorldVB()
Console.WriteLine(helloWorld.HelloWorld("Maurice"))
Dim runtime As ScriptRuntime = PythonEngine.CurrentEngine.Runtime
Dim scope As ScriptScope = runtime.ExecuteFile("HelloWorld.py")
Dim pythonType As PythonType = scope.GetVariable(Of PythonType)("HelloWorldIronPython")
helloWorld = CType(runtime.Operations.Call(pythonType), HelloWorldVB)
Console.WriteLine(helloWorld.HelloWorld("Maurice"))
Console.ReadLine()
End Sub
End Module
我會按照從教程鏈接,但重要的代碼是波紋管,因爲這將導入需要運行時信息IronPython的:
**Imports Microsoft.Scripting.Hosting
Imports IronPython.Hosting
Imports IronPython.Runtime.Types**
&
**Dim runtime As ScriptRuntime = PythonEngine.CurrentEngine.Runtime
Dim scope As ScriptScope = runtime.ExecuteFile("HelloWorld.py")
Dim pythonType As PythonType = scope.GetVariable(Of PythonType)("HelloWorldIronPython")
helloWorld = CType(runtime.Operations.Call(pythonType), HelloWorldVB)
Console.WriteLine(helloWorld.HelloWorld("Maurice"))**
顯然Console.WriteLine(helloWorld.HelloWorld( 「莫里斯」))將被校正爲:
昏暗result_location作爲字符串= helloWorld.HelloWorld( 「莫里斯」)
其中 「莫里斯」 會是包含圖像位置的字符串。
現在我不得不問,你在Visual Studio中設置EMGU的問題我知道,特別是對那些對它不熟悉的人可能會感到沮喪。如果您希望我會很樂意幫助您正確設置它。我問的原因是因爲你提供這個給最終用戶,你的代碼可以更高效,而不需要調用IronPython。尤其是因爲每個進程都需要從硬盤讀取和寫入數據。
開始:我將假定您已經在您的項目中包含了對Emgu.CV,Emgu.CV.UI和EMGU.Util的引用。但必須將「opencv_core220.dll」,「opencv_imgproc220.dll」文件直接添加到項目中,並確保在屬性窗口中將「複製到輸出」選項設置爲「始終複製」。如果不是,你會得到錯誤的圖像格式不正確等。你只需要這兩個.dll來讀取圖像和訪問數據等,你可能需要其他.avi電影的其他人。請注意,這兩個.dll現在必須與您的項目一起分發才能正常工作。
要注意這可能會改變,具體取決於您使用64位機器或32位機器,但64位EMGU版本不能在X86機器上運行。您還必須確保您的目標平臺在Visual Studio中是正確的。
我希望這可以幫助你,
乾杯 克里斯
哇,克里斯!這是你給我的一個很好的回覆!非常詳細!我會稍後檢查你的鏈接,但現在看起來它會起作用。無論如何,關於我得到的emgu錯誤,每當我嘗試使用以下語句在visual basic中創建一個圖像時:Dim img As New Image(Of Bgr,Byte)(「Proba1.jpg」)我得到一個異常,指出「初始化爲Emgu.Cv.CvInvoke會引發一個異常,此外,Visual Studio會打開一個包含Image.cs的新選項卡,每當我嘗試訪問Emgu.CV中的Image類時都會發生這種情況。可能是因爲它是Windows窗體應用程序?非常感謝! – Calin
很抱歉關於我在度假時晚回覆,「Emgu.CV.CvInvoke的類型初始值設定項引發了一個異常。」通常情況下,opencv_core220.dll在輸出目錄中不可用。如果通過執行Actions:View Detail ...來查看錯誤,則InnerException可能會讀取{「無法加載DLL'opencv_core220':找不到指定的模塊。 (從HRESULT異常:0x8007007E)「}或類似的,我說你必須添加」opencv_core220.dll「,」opencv_imgproc220.dll「文件直接到你的項目[繼續] – Chris
[]然後在解決方案資源管理器中選擇每個文件並更改「複製到輸出」屬性選項(在屬性窗口中)複製總是這應該解決問題,而惱人的問題歸結爲EMGU只是一個包裝,所以它仍然需要在那裏的原始OpenCV類文件來處理。希望這可以解決問題Cheers – Chris