我收到此错误
'Emgu.CV.CvInvoke'的类型初始值设定项引发异常。
当我尝试使用Emgu CV时。我已经尝试了所有我能想到的东西来解决这个问题,但它仍然会给出相同的错误,当我点击一个按钮时它会显示
对象引用未设置为对象的实例。
这是我正在尝试的代码:
void ProcessFunction(object sender, EventArgs e)
{
imgOrg = capturecam.QueryFrame();
if (imgOrg == null) return;
imgProc = imgOrg.InRange(new Bgr(50, 50, 50), new Bgr(255, 255, 255));
imgProc = imgProc.SmoothGaussian(9);
imageBox1.Image = imgOrg;
imageBox2.Image = imgProc;
}
我可能做错了什么,如何进一步调试?谢谢!
答案 0 :(得分:14)
我遇到了同样的问题。我的内部异常是“无法加载DLL'opencv_core290'”。
您需要将x86和x64文件夹从“yourEmguFolder / bin”复制到项目的输出(bin)目录。然后再次构建项目并运行。
答案 1 :(得分:9)
可能无法加载非托管DLL依赖项。一些建议:
答案 2 :(得分:5)
将EMGU安装的bin文件夹中的所有非托管dll复制并粘贴到exe文件所在的位置(项目文件夹的Release或Debug文件夹)。
在我的例子中,非托管dll位于“C:\ Emgu \ emgucv-windows-universal-cuda 2.9.0.1922 \ bin \ x86”
答案 3 :(得分:2)
您应该将依赖项dll添加到项目中,并将“复制到输出目录”属性更改为“始终复制”(添加 - >现有项目) 来自Emgu \ emgucv-windows-universal-cuda 2.9.0.1922 \ bin \ x86
在我的项目中添加:opencv_core290.dll,opencv_highgui290.dll,opencv_ffmpeg290.dll,opencv_imageproc290.dll和 cudart32_55.dll
答案 4 :(得分:2)
首先,您必须向项目添加三个库。 opencv_core290.dll,opencv_highgui290.dll,opencv_imgproc290.dll。在这里290指的是你的opencv版本。在他们的财产改变之后"不要复制"总是"复制"。比保存你的项目。之后转到以下位置。如果您的机器是64位而不是转到以下文件夹" C:\ Emgu \ emgucv-windows-universal-cuda 2.9.0.1922 \ bin \ x64"或者如果你使用32位操作系统而不是去" C:\ Emgu \ emgucv-windows-universal-cuda 2.9.0.1922 \ bin \ x86"并复制该文件夹中的所有dll并将其粘贴到Your Project / bin / debug /文件夹中。而不是重建你的项目。比它能正常工作。
祝你好运!!!!
答案 5 :(得分:1)
我在32位机器上遇到了同样的问题3天。我通过简单地将所有dll从bin和x86文件夹复制到system32文件夹中解决了这个问题。看起来有些dll依赖于其他dll并且你转移所有它的工作时刻。我没有时间找出哪一个。
答案 6 :(得分:1)
在c#,VS 2017,emgu 3.2.0.2682
上找到了这个在AnyCPU上尝试了一个简单的构建,并收到了错误的格式异常。 所以我尝试了x86格式异常,因为评论中可能存在建议。最后我把它作为x64,它工作正常。
答案 7 :(得分:1)
安装此nuget:https://www.nuget.org/packages/Emgu.CV.runtime.windows/解决了我的问题,看起来手动dll复制已由该软件包解决。
答案 8 :(得分:0)
对我来说,单击Visual Studio解决了问题:
菜单 - >项目 - >属性 - >构建 - >喜欢32位。
一定是emgu(可能是x86)和我的操作系统x64的问题。
答案 9 :(得分:0)
您可以使用LD_LIBRARY_PATH
来解决它:
打开警告并检查您的程序缺少哪些lib
找到路径
$ locate#查找库路径
在IDE中,将环境变量LD_LIBRARY_PATH
设置为lib路径,(我使用monodevelop,路径为Run - &gt; Run With - &gt; Custom Parameters ...)< / p>
它的工作现在好了:)
答案 10 :(得分:0)
如果它在Windows Server上不起作用,则必须启用UI桌面体验。