C# AForge 和 OpenCV 的区别

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/749241/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-04 23:41:04  来源:igfitidea点击:

Differences between AForge and OpenCV

c#image-processingopencvaforge

提问by vrish88

I am just learning about computer vision and C#. It seems like two prominent image processing libraries are OpenCVand AForge. What are some of the differences of the two?

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

I am making a basic image editor in C# and while researching I have come across articles on both. But I don't really know why I would choose one over the other. I would like to eventually improve the app to include more advanced functions.

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

Thanks.

谢谢。

采纳答案by Hannes Ovrén

I am using OpenCV for a project in school right now, and I browsed the documentation for AForge and their feature seem to differ. AForge has lots of filters and is probably excellent for different transforms and image manipulation. But it seems to lack quite a bit in other areas. I could not find any matrix operations which was a disappointment as it is so useful in computer vision. Our current project (3D point cloud reconstruction from an image sequence) would, as far as I could see from the docs, be impossible to do with AForge alone.

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

Combine AForge with a good linear algebra library and you might have something really useful though.

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

As for OpenCV it has a rich feature set but is a bit tricky to program with.

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

回答by Dominic K

If you would like to improve your application with more and more advanced functions like you said, I'd go for OpenCV- however, a part of your success depends on the fact that the C# port is actively updated, which shouldn't be much of trouble considering the three ports. I think EmguCVseems to be one of the best right now in terms of updated, but when I looked at it, lacks documentation (but you could probably translate C++ code into C# with some C++ knowledge). AForge seems a lot easier for me and that's what I'm using right now. OpenCV also has support for haarcascade.xml files you can use that include face detection.

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

So for the final take: both will suit you well, OpenCV is more widely used/supported (though most user-base is C++), AForge is easier. It all comes down to what you want to do.

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

回答by Guido

Well, why not using both ;) ??

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

I am using (literally in C# ... lol) EMGUCV.NET (which is an OpenCV C# wrapper) and AFORGE.NET at the same time:

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

AFORGE.NET plus its "Image Processing Lab" makes much sense for filtering options (edge detection, thresholds, and so forth) and easing viewing functionalities.

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

OpenCV provides all the rest like SIFT/SURF and other more sophisticated image processing routines.

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

That's why you use .NET: simply bring all the components you need together in one application :)

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