.NET OpenCV包装器值得使用吗?

21

我们在大学开设了图像处理课程,将广泛使用OpenCV。问题是,OpenCV使用的是C++,而我比较擅长的是C#。我知道有一些OpenCV的封装库(包括OpenCVDotNet, SharperCV, EmguCV等),但我不知道该选择哪个。

我的问题是:

  • 哪个库包装了大部分或全部OpenCV功能?
  • 它们是否值得使用?(可能没有经常更新,缺少功能或速度等问题)
  • 或者我最好还是提高我的C++技能?

注意: 我知道我的问题可能与此问题重复,但它是旧的(来自2008年),情况可能已经发生变化。


3
你的前两个问题都可以通过查看相应包装器的信息页面/存储库得到答案。你将能够看到每个包装器的覆盖范围以及活动情况。 - Neil N
2
@NeilN 我以前从未使用过OpenCV,所以我不知道这些包装器对OpenCV的覆盖范围有多大。这就是为什么我想听听那些使用过这些库的人的意见。 - Nasreddine
我的意思是每个库页面都应该有关于涵盖/不涵盖内容的文档说明。 - Neil N
@Nacereddine,如果情况有变化,人们应该在那个重复的问题下发布新答案。否则,为什么不问一个每周的“本周最好的OpenCV .NET封装是什么”问题呢? :) - bzlm
9
@bzlm 在计算机领域,三年是非常长的时间。虽然我已经查找过之前的问题,但并没有找到答案。而且,为什么会有人回答一个已经有接受答案的三年前的问题呢? - Nasreddine
3个回答

16

我曾经尝试过EmguCV,它支持的功能范围很好。但如果你的项目需要考虑速度问题,那么最好还是提高一下你的C++技能。

我不太了解其他的包装器。我曾经和你一样处于同样的位置。在我的学术生涯中,我使用了EmguCV,但在职业生涯中不得不转向C++。

相信我,你不会觉得移动到C++很困难。


16

我没有使用过EmguCV, 但是我已经使用OpenCV有一段时间了。

根据SharperCV网站的说法:
如果您想使用OpenCV,我们当前推荐使用Emgu CV.Net包装器。

而且,OpenCVDotNet更像是一个学术沙箱,所以如果是我的话,我会在涉及C#的任何研究项目中使用EmguCV。主要是因为它正在积极维护,并且拥有当今可用包装器中最多的特性。


5
作为更新,我可以证实之前给出的答案。
我在研究和工作中都使用了OpenCV和C++以及EMGU包装器,并且我部分地同意大多数人的看法。
EMGU CV可以很容易地学习,您的代码将更容易理解,需要的代码行数更少,并且您可以调用相当数量的函数。但是它并不完整。
许多功能将无法提供您在OpenCV 3.0中找到的所有原始预期功能,例如FindNonZero()的工作方式与包装函数不完全相同,而SetValue()则使我难以调试运行时错误。
另一方面,与您可能在网上找到的任何其他封装器相比,OpenCV提供了极好的支持,并且您将使用最新的库。 OpenCV 3.1是一个伟大的版本,我发现在Xcode或Visual Studio上运行它没有问题。
因此,我建议任何想要沉浸自己于计算机视觉和图像处理的人直接选择OpenCV C ++。如果您只想解决较简单的问题,则可以选择EMGU(我不熟悉其他人,因此无法推荐)。

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