构建使用opencv的iSpy插件

时间:2014-10-16 17:59:46

标签: c# .net opencv visual-c++

我正在尝试使用opencv创建一个iSpy插件来处理图像数据 iSpy是用C#.NET编写的,因此必须是他们的插件,因此我需要一个OpenCV包装器(用C ++编写)。我尝试过使用EMGUCV和OpenCVSharp;基于emgu的插件甚至没有作为插件运行(也是它已经过时了)而且ocvsharp有一些我不能为这个项目带来的大的性能问题。

由于使用C#包装器不再是一个选项,我开始制作一个非托管C ++项目,该项目实现了插件所需的功能,并将其构建为x64 dll,并尝试为C#创建此方法和函数的包装器为了在插件上使用它。到目前为止,非常好,在iSpy之外,包装工作正常 当我尝试通过iSpy运行包含此项目的插件时,我得到:

System.BadImageFormatException was unhandled by user code
HResult=-2147024885
Message=An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
Source=ImageProcessing
StackTrace:
   at ImageProcessing.WrappingMiddleman.Pootis()
   at ImageProcessing.ObjectsFinder..ctor(String path, FinderTypes finderType) in c:\Users\Matias Lopez\Documents\GitHub\CCAddons-Testing\FaceSurveillance\ImageProcessing\ObjectsFinder.cs:line 63
   at CCAddons.Main.InitConfig() in c:\Users\Matias Lopez\Documents\GitHub\CCAddons-Testing\FaceSurveillance\FaceSurveillance\Main.cs:line 162
   at CCAddons.Main.set_Configuration(String value) in c:\Users\Matias Lopez\Documents\GitHub\CCAddons-Testing\FaceSurveillance\FaceSurveillance\Main.cs:line 155
InnerException: 
从我所看到的,这意味着解决方案平台不匹配或存在问题 现在,问题是,我需要为AnyCPU构建插件,而不是x64,因为如果没有,iSpy甚至不会接受它作为有效的插件。我该怎么做才能从插件中运行我的C ++ DLL?

1 个答案:

答案 0 :(得分:0)

好的,我完全误解了发生的事情。 iSpy是为x86构建的,因为它使用FFMPEG来实现x86(老实说我不知道​​为什么会这样做),所以我可以简单地为x86构建我的插件并完成它。 我没有使用托管C ++项目,而是使用PInvoke并在C#项目中创建了一个包装类。问题解决了。