‘Emgu.CV.CvInvoke’的类型初始值设定项引发了exception

我收到了这个错误

‘Emgu.CV.CvInvoke’的类型初始值设定项引发了exception。

当我尝试使用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; } 

我可能做错了什么,如何进一步调试? 谢谢!

我有同样的问题。 我的内部exception是“无法加载DLL’opencv_core290’”。

您需要将“yourEmguFolder / bin”中的x86和x64文件夹复制到项目的输出(bin)目录中。 然后再次构建项目并运行。

根据emgu wiki

它可能无法加载非托管DLL依赖项。 一些建议:

  1. 确保您的.NET项目针对的是x86而不是AnyCPU,因为您可能拥有OpenCV的x86版本。
  2. 确保OpenCV dll在你的PATH中(或直接在bin目录中,如果这是一个Console / WinForms / WPF应用程序。)

将EMGU安装的bin文件夹中的所有非托管dll复制并粘贴到exe文件所在的位置(项目文件夹的Release或Debug文件夹)。
就我而言,非托管dll位于“C:\ Emgu \ emgucv-windows-universal-cuda 2.9.0.1922 \ bin \ x86”

你应该将依赖dll添加到项目中并将’ copy to output directory ‘属性更改为’copy always’(添加 – >现有项目)来自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

首先,您必须向项目添加三个库。 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 /文件夹中。 而不是重建你的项目。 比它会工作正常。

祝你好运!!!!

我在我的32位机器上遇到了同样的问题3天。 我通过简单地将所有dll从bin和x86文件夹复制到system32文件夹中解决了这个问题,并且它有效。 看起来有些dll依赖于其他dll并且你转移所有它的工作时刻。 我没有时间找出哪一个。

在c#,VS 2017,emgu版本3.2.0.2682上找到了这个

尝试在AnyCPU上进行简单构建并收到错误的格式exception。 所以我尝试了x86格式exception,因为评论中可能存在建议。 最后我把它作为x64,它工作正常。

对我来说,通过单击Visual Studio解决了问题:

菜单 – >项目 – >属性 – >构建 – >首选32位。

它一定是emgu(可能是x86)和我的操作系统x64的问题。

您可以使用LD_LIBRARY_PATH来解决它:

  1. 打开警告并检查您的程序缺少哪些lib

  2. 找到路径

    $ locate#找到库路径

  3. 在IDE中,将环境变量LD_LIBRARY_PATH设置为lib路径,(我使用monodevelop,路径是Run – > Run With – > Custom Parameters …)

它的工作现在好了:)

如果它在Windows Server上不起作用,则必须启用UI桌面体验。

你可以查看post