我正在尝试创建一个Emgu Image<TColor, TDepth>
,但似乎无法正确指定我的图像的TColor
。到目前为止,我已经将我的图像从文件加载到了.Net Image
中。现在我正在尝试执行以下操作,将该图像转换为OpenCV图像表示。
Image<Bgr, Byte> cvTestImage = new Image<Bgr, Byte>(new Bitmap(testImage));
在Visual Studio中,
Bgr
两个参数都被标记为红色下划线,尽管它似乎接受Byte
参数(但我想我需要使用OpenCV的TDepth
定义?)。虽然Image<TColor, TDepth>
类型被识别,并且我已经在我的类中添加了using Emgu.CV
和using Emgu.Util
。我已经搜索了Emgu文档网站并找到了
ColorType
和Bgr
的文档,但我无法使我的IDE识别它们或在Emgu中找到它们。我使用的是Emgu版本2.4.10。
据文档显示,类型
Bgr
位于Emgu.CV.Bgr
,但Visual Studio无法自动完成。此外,当我将鼠标悬停在Image<>
的Byte
参数上时,Visual Studio显示其为System.Byte
类型,而不是像Emgu.CV.TDepth.Byte
这样的类型。
编辑:好的,我现在不确定发生了什么...
我不确定这个问题是在我尝试安装MVSCRT(根据Emgu文档的建议)之前还是之后发生的。但现在当我尝试调用Emgu库中的代码时,我会收到以下错误信息。
编辑2: 我不确定为什么,但通过从代码中删除“using Emgu.Util”语句,上述问题已经解决。很有趣,想知道发生了什么。
所以现在我回到了半原始的问题。 我已按照Emgu网站的指示安装了MSVCRT。
编辑3: 看起来我终于通过将x86和x64目录移动到执行文件夹中使其工作了。现在我只是等待对函数的调用返回...
Image<>
时出现了 TypeInitializationException,我猜这是因为我使用的是System.Byte
而不是像Emgu.CV.Byte
这样的东西。使用 Resolve 是个好主意(谢谢),但由于 Visual Studio 已经识别它了,所以我不能这么做。你有任何想法它可能在哪里吗?// 我将尝试将Byte
更改为一些它无法识别的内容,并希望使用 Resolve。 - KDeckerbyte
类型无关。你缺少OpenCV的dll文件。请阅读此文档。 - dymanoidEmgu.CV.dll
中出现了未处理的类型为“System.TypeInitializationException”的异常。这与页面中提到的Emgu.CV.CvInvoke
无关。(虽然我已经为我的计算机安装了 MSVCRT(它随着 Emgu 安装一起安装了,我再次安装只是为了确保安装成功)). - KDecker