2011-10-24 40 views
13

所以我们在大学有这个图像处理课程,我们将广泛使用OpenCV。问题是,OpenCV使用C++,但我比C++更流畅地使用C#。我知道有OpenCV的包装(OpenCVDotNet,SharperCV,EmguCV,...)但我不知道该选哪个。.Net OpenCV包装是否值得使用?

我的问题是:

  • 哪一个包裹大多数/所有的OpenCV的功能?
  • 他们甚至值得使用? (可能不会经常更新,缺少功能或速度,...)
  • 或者我应该更好地刷我的C++技能吗?

注:我知道,我的问题是this one可能重复的,但它是旧的(2008年),事情可能改变。

+2

您的前两个问题都可以通过查看包装的相应信息页/回购来回答。您将能够看到每个人的报道以及活动。 –

+1

@NeilN我从来没有使用过OpenCV,所以我不知道这些包装对OpenCV有多大覆盖。这就是为什么我期望听到与这些库中的任何一个合作的人的意见。 – Nasreddine

+0

我的意思是说,每个lib的页面应该有关于什么/没有被覆盖的文档。 –

回答

11

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

来自SharperCV的网站:
如果您想使用OpenCV,Emgu CV.Net封装是我们当前的建议。

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

16

我曾尝试过EmguCV。它支持的功能范围很好。但是如果你的项目是速度问题的话,那么最好刷一下你的C++技能。

我不太了解其他包装。我曾经在同一个位置上。我在学术期间从事emgucv工作,不得不在我的职业中转向C++。

相信我,你不会觉得移植到C++上太难了。

3

作为更新,我可以证实以前给出的答案。

我已经使用OpenCV与C++和EMGU包装进行研究和工作,我同意部分与大多数人。

EMGU CV可以简单易学,你的代码会更容易理解,它需要较少的代码行并没有,你可以调用函数一个体面的范围。但它并不完整。

许多函数不会提供OpenCV 3.0的所有原始功能,例如, FindNonZero()不能和包装的函数完全一样,SetValue()让我很难抛出运行时错误难以调试。

在另一方面,OpenCV提供比你会发现其他任何包装的大力支持在线,您将有最先进的最新图书馆合作。 OpenCV 3.1是一个很好的版本,我发现在Xcode或Visual Studio上运行它没有任何问题。

因此,我会建议任何想要沉浸在计算机视觉和图像处理中的人直奔OpenCV C++。如果你只是想处理更复杂的问题,你可以选择EMGU(我不能推荐别人,因为我不熟悉)。