在Emgu OpenCV .Net包装器中,TColor的定义在哪里?

3

我正在尝试创建一个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.CVusing Emgu.Util
我已经搜索了Emgu文档网站并找到了ColorTypeBgr的文档,但我无法使我的IDE识别它们或在Emgu中找到它们。
我使用的是Emgu版本2.4.10。
据文档显示,类型Bgr位于Emgu.CV.Bgr,但Visual Studio无法自动完成。此外,当我将鼠标悬停在Image<>Byte参数上时,Visual Studio显示其为System.Byte类型,而不是像Emgu.CV.TDepth.Byte这样的类型。

enter image description here

编辑:好的,我现在不确定发生了什么...

我不确定这个问题是在我尝试安装MVSCRT(根据Emgu文档的建议)之前还是之后发生的。但现在当我尝试调用Emgu库中的代码时,我会收到以下错误信息。

enter image description here

我已重新安装了Emgu库,并重新安装了MVSCRT。每次尝试调用任何Emgu代码时,都会抛出此异常。我不确定接下来该怎么做。
编辑2: 我不确定为什么,但通过从代码中删除“using Emgu.Util”语句,上述问题已经解决。很有趣,想知道发生了什么。
所以现在我回到了半原始的问题。 我已按照Emgu网站的指示安装了MSVCRT。
编辑3: 看起来我终于通过将x86和x64目录移动到执行文件夹中使其工作了。现在我只是等待对函数的调用返回...
1个回答

6

如果您正在使用 EmguCV 版本2.4或3.0,则不要忘记这个:

using Emgu.CV.Structure;

在Visual Studio中,您可以右键单击未解析的Bgr标记,并在上下文菜单中选择Resolve。 您应该会看到两个菜单项:

  • 使用Emgu.CV.Structure;
  • Emgu.CV.Structure.Bgr

选择第一个以让Visual Studio使用所建议的扩展。


嗯,我现在运行时唯一的问题是,在尝试创建第一个 Image<> 时出现了 TypeInitializationException,我猜这是因为我使用的是 System.Byte 而不是像 Emgu.CV.Byte 这样的东西。使用 Resolve 是个好主意(谢谢),但由于 Visual Studio 已经识别它了,所以我不能这么做。你有任何想法它可能在哪里吗?// 我将尝试将 Byte 更改为一些它无法识别的内容,并希望使用 Resolve。 - KDecker
@KDecker,这个异常与byte类型无关。你缺少OpenCV的dll文件。请阅读此文档 - dymanoid
我的异常具体是Emgu.CV.dll中出现了未处理的类型为“System.TypeInitializationException”的异常。这与页面中提到的 Emgu.CV.CvInvoke 无关。(虽然我已经为我的计算机安装了 MSVCRT(它随着 Emgu 安装一起安装了,我再次安装只是为了确保安装成功)). - KDecker
啊,不用担心,具体的错误就在我上面引用的第一句话下面。尽管我已经安装了 MSVCRT,但我仍然遇到了同样的问题,上面我已经做出了修改。 - KDecker

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