我只是在学习计算机视觉和C#。看起来两个着名的图像处理库是OpenCV和AForge。这两者有什么不同?
我正在使用C#制作一个基本的图像编辑器,在研究时我遇到了两篇文章。但我真的不知道为什么我会选择一个而不是另一个。我想最终改进应用程序以包含更多高级功能。
感谢。
答案 0 :(得分:43)
好吧,为什么不同时使用;)??
我正在使用(字面意思是在C#...大声笑)EMGUCV.NET(这是一个OpenCV C#包装器)和AFORGE.NET同时:
AFORGE.NET及其“图像处理实验室”对过滤选项(边缘检测,阈值等)以及简化查看功能非常有意义。
OpenCV提供了所有其他功能,如SIFT / SURF和其他更复杂的图像处理程序。
这就是您使用.NET的原因:只需将您需要的所有组件集中在一个应用程序中:)
答案 1 :(得分:19)
我现在正在学校使用OpenCV进行项目,我浏览了AForge的文档,他们的功能似乎有所不同。 AForge有很多滤镜,可能适用于不同的变换和图像处理。但在其他方面似乎缺乏相当多的东西。我找不到任何令人失望的矩阵运算,因为它在计算机视觉中非常有用。我们目前的项目(从图像序列中进行3D点云重建)从文档中可以看出,单独使用AForge是不可能的。
将AForge与一个优秀的线性代数库相结合,你可能会有一些非常有用的东西。
对于OpenCV,它具有丰富的功能集,但编程时有点棘手。
答案 2 :(得分:3)
如果您希望使用越来越多的高级功能来改进您的应用程序,我会选择OpenCV-但是,您成功的一部分取决于C#端口是否正在积极更新,这应该是'考虑到这三个端口,我们会遇到很多麻烦。我认为EmguCV在更新方面似乎是现在最好的之一,但是当我查看它时,缺少文档(但你可以将C ++代码翻译成具有一些C ++知识的C#)。 AForge对我来说似乎更容易,而这就是我现在正在使用的东西。 OpenCV还支持您可以使用的haarcascade.xml文件,包括面部检测。
所以对于最后的考虑:两者都很适合你,OpenCV被更广泛地使用/支持(尽管大多数用户基础是C ++),AForge更容易。这一切都取决于你想做什么。