【发布时间】:2017-03-25 20:36:28
【问题描述】:
当我从给定路径加载图像时:
Image<Bgr, byte> source = new Image<Bgr, byte>(absoluteImagePath);
绝对路径在哪里:
D:\Users\Oijafaosfasdf\Source\Workspaces\SomeProject\SomeProjectV3\SomeProject.UI\bin\Debug\636260785130864402.png
它抛出了奇怪的异常:
第一次:
在不终止程序的情况下尝试创建图像的所有其他时间:
--- 内部异常堆栈跟踪的开始 ---
“Emgu.CV.CvInvoke”的类型初始化程序引发异常。 ---> System.ArgumentException: 该路径不是合法的形式。在 System.IO.Path.NormalizePath(字符串路径,布尔全校验,Int32 maxPathLength,布尔值 expandShortPaths)在 System.IO.Path.GetFullPathInternal(字符串路径)在 System.IO.FileInfo.Init(字符串文件名,布尔检查主机)在 System.IO.FileInfo..ctor(字符串文件名)在 Emgu.CV.CvInvoke.LoadUnmanagedModules(字符串加载目录,字符串 [] 非托管模块)在 Emgu.CV.CvInvoke.DefaultLoadUnmanagedModules(String[] modules) 在 Emgu.CV.CvInvoke..cctor()
--- 内部异常堆栈跟踪结束 ---
这与此不重复 -> stackoverflow.com 问题,因为我提供了绝对路径。
我已经检查了文件格式是否有效并且文件存在于目录中..
那么,会出现什么问题呢?
注意:我正在使用 Nuget 包管理器安装 Emgu CV (v3.1.0.1)。
【问题讨论】:
-
你试过用更简单的路径吗?例如
D:\test -
@ThomasMoors 刚试过,还是一样。
-
真可惜,双反斜杠呢?
-
您是否尝试在没有 emgu 的情况下打开文件?喜欢
new FileInfo(@"yourpath")或var exist = File.Exists(@"yourpath")或File.OpenRead(@"yourpath")。问题不在于 Emgu,而在于您的文件路径。有时你可以在字符串中有一个不可见的字符。 -
@Kalten 是的,我试过
new FileInfo(@"mypath").Exists,一切似乎都很好。看起来可能有安装问题,因为这看起来很可疑。我记得当我使用 Nuget 包管理器使用 openCV 时,没有任何效果..