OpenCVSharp:无法加载DLL“OpenCvSharpExtern”

10
我已在项目中使用NuGet管理器安装了最新的OpenCVSharp 2(2.4.10.201...)。关于OpenCVSharp.CvMat的所有内容(加载、操作等)都能正常工作,因此我确信安装是正确的。
然而,我完全无法使用OpenCVSharp.CPlusPlus!问题在于它无法加载OpenCvSharpExtern.dll。
从try-catch块中显示的错误:
try
{
    Mat mat = new Mat();
} catch (Exception err)
{
    Console.WriteLine( err );
}

System.TypeInitializationException: The type initializer for 'OpenCvSharp.CPlusPlus.Mat' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'OpenCvSharpExtern': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
   at OpenCvSharp.CPlusPlus.NativeMethods.core_Mat_sizeof()
   at OpenCvSharp.CPlusPlus.Mat..cctor()
   --- End of inner exception stack trace ---
   at OpenCvSharp.CPlusPlus.Mat..ctor()
   at MainClass.Main() in C:\Users\kotsias\Documents\Visual Studio 2015\Projects\MyCVSharp\ConsoleApplication1\Test.cs:line 14

OpenCvSharpExtern.dll 已经被部署在以下子文件夹中,随我的 .exe 文件一起:

..\dll\x86

&

..\dll\x64

如果我手动将x64 .dll复制到与我的 .exe 文件相同的文件夹中,仍会出现上述错误。如果我复制x86 .dll,则会出现不同的错误:

System.TypeInitializationException: The type initializer for 'OpenCvSharp.CPlusPlus.Mat' threw an exception. ---> System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
   at OpenCvSharp.CPlusPlus.NativeMethods.core_Mat_sizeof()
   at OpenCvSharp.CPlusPlus.Mat..cctor()
   --- End of inner exception stack trace ---
   at OpenCvSharp.CPlusPlus.Mat..ctor()
   at MainClass.Main() in C:\Users\kotsias\Documents\Visual Studio 2015\Projects\MyCVSharp\ConsoleApplication1\Test.cs:line 14
6个回答

22

仅安装“OpencvSharp{version} nuget”软件包是不够的。您还需安装“OpencvSharp{version}.runtime.{operating_system}”软件包。

例如,在我的情况下,我需要安装以下Nuget软件包:

  • OpencvSharp4
  • OpencvSharp4.runtime.win

安装 OpenCVSharp4.runtime.* 解决了我的问题。 - taylorswiftfan
解决了我的问题。谢谢。 - Zimo

5

可能会遇到的另一个问题:

OpenCvSharpExtern.dll需要mfplat.dll,该文件是Media Feature Pack的一部分。Windows 'N'版本默认不包含此文件。

可以从“应用和功能”->“可选功能”->“添加功能”中安装该文件。


1
另外,在Server Core上,我使用“Install-WindowsFeature -Name Server-Media-Foundation”来修复此问题。 - Peter Wishart
2
这个答案可能为我节省了几个小时的时间。 - Kaan C. Fidan

1

您可能没有正确安装Visual C++ Redistributable软件包的版本。

OpenCvSharp 2.4.10使用Visual C++ 2013 Redistributable Package。然而,OpenCvSharp 2.4.10已被弃用,作者建议使用OpenCvSharp 3.2

#OpenCvSharp 2.4.10是.NET Framework下OpenCV 2.4.10的跨平台封装。

该项目已被弃用。最新版本可在OpenCvSharp中获取。

欲了解更多信息,请查看:


我需要使用3.5框架,所以我可能被困在旧版本中。我尝试了最新的版本,但它不能与低于4.0的任何东西一起使用。 - Bill Kotsias
1
项目的README.md文件说明支持.NET Framework 2.0及更高版本。我在GitHub上创建了相应的问题(issue)。 - Leonid Vasilev

1

在生产环境中(在创建安装文件并安装后)我遇到了这个问题。我通过以下步骤解决了它:

  1. 通过NuGet Packages安装OpenCVSharp。
  2. 在项目属性中将平台目标设置为X64。
  3. 使用相同的平台创建安装文件。
  4. 手动将“packages\OpenCvSharp4.runtime.win.4.5.3.20210817\runtimes\win-x64\native\OpenCvSharpExtern.dll”文件复制到安装目录中。

1

在软件包管理器中使用此代码:

Install-Package OpenCvSharp4.Windows -Version 4.0.0.20190108

0
我遇到了这个问题,发现我需要将我的项目从WSL文件系统移动到正常的C:驱动器上。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接