【发布时间】:2010-10-19 10:52:17
【问题描述】:
我只是在学习计算机视觉和 C#。似乎两个著名的图像处理库是OpenCV 和AForge。两者有什么不同?
我正在用 C# 制作一个基本的图像编辑器,并且在研究时我遇到了关于这两个方面的文章。但我真的不知道为什么我会选择其中一个。我希望最终改进应用程序以包含更多高级功能。
谢谢。
【问题讨论】:
标签: c# image-processing opencv aforge
我只是在学习计算机视觉和 C#。似乎两个著名的图像处理库是OpenCV 和AForge。两者有什么不同?
我正在用 C# 制作一个基本的图像编辑器,并且在研究时我遇到了关于这两个方面的文章。但我真的不知道为什么我会选择其中一个。我希望最终改进应用程序以包含更多高级功能。
谢谢。
【问题讨论】:
标签: c# image-processing opencv aforge
我现在在学校的一个项目中使用 OpenCV,我浏览了 AForge 的文档,它们的功能似乎有所不同。 AForge 有很多过滤器,可能非常适合不同的变换和图像处理。但在其他方面似乎还欠缺不少。我找不到任何令人失望的矩阵运算,因为它在计算机视觉中非常有用。我们当前的项目(从图像序列重建 3D 点云),据我从文档中看到的,仅使用 AForge 是不可能的。
将 AForge 与一个好的线性代数库结合起来,你可能会得到一些真正有用的东西。
对于 OpenCV,它具有丰富的功能集,但编程有点棘手。
【讨论】:
好吧,为什么不同时使用两者;) ??
我正在同时使用(字面意思是在 C# 中......哈哈)EMGUCV.NET(它是一个 OpenCV C# 包装器)和 AFORGE.NET:
AFORGE.NET 加上它的“图像处理实验室”对于过滤选项(边缘检测、阈值等)和简化查看功能非常有意义。
OpenCV 提供所有其他功能,例如 SIFT/SURF 和其他更复杂的图像处理例程。
这就是您使用 .NET 的原因:只需将您需要的所有组件放在一个应用程序中即可 :)
【讨论】:
如果您想像您所说的那样使用越来越多的高级功能来改进您的应用程序,我会选择 OpenCV- 但是,您成功的一部分取决于 C# 端口被积极更新的事实,这应该考虑到这三个端口,这不是什么大问题。我认为EmguCV 似乎是目前最好的更新之一,但是当我查看它时,缺少文档(但您可能可以通过一些 C++ 知识将 C++ 代码翻译成 C#)。 AForge 对我来说似乎更容易,这就是我现在正在使用的。 OpenCV 还支持您可以使用的 haarcascade.xml 文件,其中包括人脸检测。
所以最后一点:两者都适合你,OpenCV 得到更广泛的使用/支持(尽管大多数用户群是 C++),AForge 更容易。这一切都取决于你想做什么。
【讨论】: