52

我只是在学习计算机视觉和 C#。似乎两个著名的图像处理库是OpenCVAForge。两者有哪些不同之处?

我正在用 C# 制作一个基本的图像编辑器,并且在研究时我遇到了这两个方面的文章。但我真的不知道为什么我会选择其中一个。我想最终改进应用程序以包含更高级的功能。

谢谢。

4

3 回答 3

44

好吧,为什么不同时使用两者;)?

我正在同时使用(字面意思是在 C# 中......大声笑)EMGUCV.NET(这是一个 OpenCV C# 包装器)和 AFORGE.NET:

AFORGE.NET 加上它的“图像处理实验室”对于过滤选项(边缘检测、阈值等)和简化查看功能非常有意义。

OpenCV 提供了所有其他功能,例如 SIFT/SURF 和其他更复杂的图像处理程序。

这就是您使用 .NET 的原因:只需将您需要的所有组件放在一个应用程序中即可 :)

于 2011-01-23T17:12:40.710 回答
20

我现在在学校的一个项目中使用 OpenCV,我浏览了 AForge 的文档,它们的功能似乎有所不同。AForge 有很多过滤器,可能非常适合不同的变换和图像处理。但在其他方面似乎还欠缺不少。我找不到任何令人失望的矩阵运算,因为它在计算机视觉中非常有用。我们目前的项目(从图像序列重建 3D 点云),据我从文档中看到的,仅使用 AForge 是不可能的。

将 AForge 与一个好的线性代数库结合起来,你可能会得到一些非常有用的东西。

至于 OpenCV,它具有丰富的功能集,但编程有点棘手。

于 2009-04-25T13:41:55.290 回答
3

如果您想像您所说的那样使用越来越多的高级功能来改进您的应用程序,我会选择 OpenCV - 但是,您成功的一部分取决于 C# 端口正在积极更新这一事实,这应该不多考虑到三个端口的麻烦。我认为EmguCV在更新方面似乎是目前最好的之一,但是当我查看它时,缺少文档(但您可能可以通过一些 C++ 知识将 C++ 代码翻译成 C#)。AForge 对我来说似乎更容易,这就是我现在正在使用的。OpenCV 还支持您可以使用的 haarcascade.xml 文件,其中包括人脸检测。

所以最后一点:两者都适合你,OpenCV 得到更广泛的使用/支持(尽管大多数用户群是 C++),AForge 更容易。这一切都取决于你想做什么。

于 2010-01-07T04:35:57.377 回答