我收到此错误
“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;
}
我可能做错了什么以及如何进一步调试?谢谢!
我也有同样的问题。我的内心异常是“无法加载 DLL 'opencv_core290'”。
您需要将 x86 和 x64 文件夹从“yourEmguFolder/bin”复制到项目的输出(bin)目录。然后再次构建项目并运行。
可能无法加载非托管 DLL 依赖项。一些建议:
将 EMGU 安装的 bin 文件夹中的所有非托管 dll 复制并粘贴到 exe 文件所在的位置(项目文件夹的 Release 或 Debug 文件夹)。
就我而言,非托管 dll 位于“C:\Emgu mgucv-windows-universal-cuda 2.9.0.1922 in\x86”
安装这个nuget:https://www.nuget.org/packages/Emgu.CV.runtime.windows/解决了我的问题,看起来这个包解决了手动dll复制的问题。
您应该将依赖项 dll 添加到项目中,并将“复制到输出目录”属性更改为“始终复制”(添加 -> 现有项目) 来自 Emgu mgucv-windows-universal-cuda 2.9.0.1922 in\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 mgucv-windows-universal-cuda 2.9.0.1922 in\x64”,或者如果您使用 32 位操作系统,则转到“C:\Emgu mgucv- windows-universal-cuda 2.9.0.1922 in\x86" 并复制该文件夹中的所有 dll,并将其粘贴到您的 Project/bin/debug/ 文件夹中。而不是重建你的项目。这样就可以正常工作了。
祝你好运!!!!
在 c#、VS 2017、emgu 版本 3.2.0.2682 上找到了这个
尝试在 AnyCPU 上进行简单构建并收到错误格式异常。 所以我尝试了 x86 bad format 异常,因为评论中可能有建议。最后我把它设置为 x64 并且运行良好。
我的 32 位机器上也遇到同样的问题 3 天。我通过简单地将 bin 和 x86 文件夹中的所有 dll 复制到 system32 文件夹中解决了这个问题,它成功了。看起来有些 dll 依赖于其他 dll,并且在您传输所有 dll 时它就可以工作了。我没有时间找出哪一个。
对我来说,通过单击 Visual Studio 解决了问题:
菜单 -> 项目 -> 属性 -> 构建 -> 首选 32 位。
这肯定是 emgu(可能是 x86)和我的操作系统 x64 的问题。
你可以使用
LD_LIBRARY_PATH
来解决它:
打开警告并检查您的程序缺少哪些库
找到路径
$locate #查找库路径
在你的IDE中,将环境变量
LD_LIBRARY_PATH
设置为lib路径,(我使用monodevelop,路径是Run-->Run With-->CustomParameter...)现在效果很好:)
如果它在 Windows Server 上不起作用,您必须启用 UI 桌面体验。
我在生产机器上有同样的错误,在开发机器上没有问题,dll 位于同一文件夹中。
对我来说,安装 Windows Visual C++ 2010 后问题已修复