';的类型初始值设定项;Emgu.CV.CvInvoke';引发了异常
本文关键字:CvInvoke CV 异常 Emgu 类型 | 更新日期: 2023-09-27 18:19:44
我收到这个错误
"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)目录。然后重新构建项目并运行。
根据emgu wiki
它可能无法加载非托管DLL依赖项。几个建议:
- 确保你的.NET项目针对的是x86而不是AnyCPU,因为你可能有OpenCV的x86版本
- 确保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添加到项目中,并将"复制到输出目录"属性更改为"始终复制"(添加->现有项)来自Emgu''emgucv windows通用cuda 2.9.0.1922''bin''x86
在我的项目中添加:opencv_core290.dll、opencv_higigui290.dll、opencv_ffmpeg290.dll、opencv_imageproc290.dll和cudart32_5.dll
首先,您必须向项目中添加三个库。opencv_core290.dll、opencv_higigui290.dll、opencv_imgproc290.dll。此处290表示您的opencv版本。之后,他们的属性"请勿复制"更改为"始终复制"。而不是保存您的项目。然后去下面的地方。如果您的机器是64位的,请转到以下文件夹"C:''Emgu''emgucv windows universal cuda 2.9.0.1922''bin''x64",或者如果您使用的是32位操作系统,请转到"C:''Emgu''emgupv windows universal-cuda 2.9..1922''bin''x86"并复制该文件夹中的所有dll,然后将其粘贴到您的项目/bin/debug/文件夹中。而不是重建你的项目。然后它会很好地工作。
祝你好运!!!!
在c#,VS 2017,emgu版本3.2.0.2682 上发现了这一点
尝试在AnyCPU上进行简单构建,但收到错误的格式异常。所以我尝试了x86坏格式异常,因为评论中可能有建议。最后我把它作为x64,它工作得很好。
安装此nuget:https://www.nuget.org/packages/Emgu.CV.runtime.windows/解决了我的问题,看起来这个包解决了手动复制dll的问题。
我的32位机器出现了同样的问题,持续了3天。我只是简单地将所有dll从bin和x86文件夹复制到system32文件夹中,就解决了这个问题,并且成功了。看起来有些dll依赖于其他dll,当你转移所有dll时,它就起作用了。我没有时间弄清楚是哪一个。
For me问题通过在Visual Studio中单击解决
菜单->项目->属性->构建->首选32位。
这一定是emgu(可能是x86)和我的操作系统x64)的问题。
您可以使用LD_LIBRARY_PATH
来解决它:
-
打开警告并检查程序缺少的库
-
定位路径
$locate#查找库路径
-
在IDE中,将环境变量
LD_LIBRARY_PATH
设置为lib路径,(我使用monodevelop,路径为Run-->Run With-->Custom Parameters…)
它的工作现在退出良好:)
如果它在Windows Server上不起作用,则必须启用UI桌面体验。
您可以查看后
我在生产机器中遇到了同样的错误,在开发机器中没有问题,dll在同一个文件夹中。
只需将构建设置从任何CPU更改为x86或x64即可。