虽然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